порядок строк при вставке multplie строк в MySQL

В PHP я создаю и выполняю SQL-запросы как следующее.

INSERT INTO Table (Column1, Column2, Column3) VALUES
('1', '2', '3'),
('A', 'B', 'C'),
('AA', 'BB', 'CC');

Однако порядок, в который они вставляются в базу данных, отличается каждый раз, когда я пробую это. Существует ли способ, которым я могу удостовериться, что они вставляются в порядок, они перечислены?

Дополнение: Спасибо парни для справки. У меня есть использование PHP для составления таблиц MySQL из файлов CSV некоторое время. В прошлом я всегда использовал, составил таблицу и вставил все строки внезапно. В них случаются, таблица SQL всегда имела тот же порядок как мой Запрос на вставку. Однако теперь я создаю MySQL и затем добавляю содержание постепенно. Это - когда порядок базы данных становится случайным.

Я преодолел это при помощи ALTER TABLE... Запросы ORDER BY, но мне любопытно, поскольку был порядок в первом случае, и теперь это кажется очень случайным.

5
задан OMG Ponies 5 January 2010 в 04:08
поделиться

7 ответов

По умолчанию выполняется порядок вставки операторов. Если нет иерархической связи между строками, то вставленный порядок не имеет значения. Если вы хотите, чтобы вывод был последовательным, вы должны определить в своем запросе пункт ORDER BY.

.
4
ответ дан 18 December 2019 в 13:15
поделиться

Несмотря на то, что порядок вставки не гарантируется СУБД, это, как правило, FIFO. First In First out.

1
ответ дан 18 December 2019 в 13:15
поделиться

Порядок их вставки не так важен, поскольку вы, скорее всего, будете использовать в своих запросах пункт ORDER BY при обратном вытаскивании данных. Помните, что MySQL предназначен для хранения данных, а не для их представления.

SELECT col1, col2
FROM table1
ORDER BY col2 ASC // fixes any ordering issues in the native-storage
3
ответ дан 18 December 2019 в 13:15
поделиться

Нет способа (о котором мне известно) заставить заявление INSERT произойти в конкретном Заказе. Просто делая голый выбор, например:

SELECT * FROM Table

не всегда возвращает данные в одном и том же порядке. Это связано с тем, что MySQL (и все другие системы баз данных) предназначены для хранения данных, и именно разработчик должен сделать соответствующий запрос. К счастью, есть много различных способов упорядочить, ограничить и выбрать данные, например:

ORDER BY column_name ASC
LIMIT 10
WHERE column_name = "test"
WHERE column_name IN (1, 2, 3)
--etc
0
ответ дан 18 December 2019 в 13:15
поделиться

Если вы хотите получить строки в определенном порядке, единственный способ убедиться в этом - использовать пункт ORDER BY.

.
3
ответ дан 18 December 2019 в 13:15
поделиться

Отношение никогда не определяет порядок, поэтому от этого нельзя зависеть. Вы можете использовать пункт ORDER BY для получения желаемого результата.

.
2
ответ дан 18 December 2019 в 13:15
поделиться

Есть способ гарантировать порядок их вставки:

INSERT INTO Table (Column1, Column2, Column3) VALUES ('1', '2', '3');
INSERT INTO Table (Column1, Column2, Column3) VALUES ('A', 'B', 'C');
INSERT INTO Table (Column1, Column2, Column3) VALUES ('AA', 'BB', 'CC');

:-)

Но нужно понимать, что SQL - это реляционная алгебра, работающая с результирующими множествами, и что порядок, в который вставляются вещи, не имеет значения. Если только один из столбцов не является какой-то меткой времени или у вас нет поля автоинкремента, которое вы хотите установить в определенном порядке для трех строк, это не будет иметь значения (и то и другое на самом деле не является веской причиной для желания контролировать порядок).

Вам не гарантируется какой-либо конкретный порядок, когда вы извлекаете строки, если только вы не указываете в каком порядке вы хотите их вставлять, так что вы не должны беспокоиться о порядке, в котором они создаются. Без пункта ордер по может фактически изменяться каждый раз, когда вы делаете выбор.

.
1
ответ дан 18 December 2019 в 13:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: