Intereting Posts
json encode не работает с массивом объектов PHPExcel: Как проверить, действителен ли файл XLS или нет? не удалось сохранить одно изображение вместе с несколькими изображениями в codeigniter Переменная Javascript внутри переменной php Как использовать ссылки на примеры Swagger? Как защитить пароль при отправке с помощью AJAX? Все серии на данной оси должны иметь один и тот же тип данных Zinnia (распознавание рукописного ввода) и интеграция PHP Настройка настраиваемого пути к php.ini (не в Apache) Eval Base64 virus WordPress Как написать скрипт php / htaccess для перенаправления переменных формы на другой веб-сайт PHP Неопределенная переменная в функциях и включенных скриптах PHP: необходимо дважды войти в систему до тех пор, пока не будут установлены переменные сеанса PHP заменяет текст изображением Обнаружение Ajax в PHP и уверенность в том, что запрос был с моего собственного сайта

порядок строк при вставке многострочных строк в MySQL

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

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

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

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

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

Related of "порядок строк при вставке многострочных строк в MySQL"

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

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

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

 SELECT col1, col2 FROM table1 ORDER BY col2 ASC // fixes any ordering issues in the native-storage 

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

Существует способ, которым вы можете гарантировать порядок, в котором они были вставлены:

 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 является реляционной алгеброй, работающей с наборами результатов, и что порядок, в котором вставлены вещи, не имеет значения. Если ни один из столбцов не является временной меткой какого-либо типа или у вас есть поле автоматического увеличения, которое вы хотите установить в определенном порядке для трех строк, это не имеет значения (и оба они на самом деле не являются вескими причинами для желаемого порядка управление).

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

Несмотря на то, что порядок вставки не является гарантией СУБД, он обычно является FIFO. Первым прибыл, первым обслужен.

Я не знаю (что я знаю), чтобы заставить инструкцию INSERT происходить в определенном порядке. Просто сделайте голый выбор, например:

 SELECT * FROM Table 

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

 ORDER BY column_name ASC LIMIT 10 WHERE column_name = "test" WHERE column_name IN (1, 2, 3) --etc