在PHP中,我创建并执行如下所示的SQL查询。INSERT INTO Table (Column1, Column2, Column3) VALUES ('1', '2', '3'), ('A', 'B', 'C'), ('AA', 'BB', 'CC');
但是,每次我尝试这样做时,它们插入到数据库中的顺序都不一样。有没有方法可以确保它们按照列出的顺序插入?
补充:谢谢大家的帮助。我已经使用PHP从CSV文件创建MySQL表有一段时间了。在过去,我总是使用创建一个表,并插入所有的行一次。在这种情况下,SQL表总是有相同的顺序作为我的INSERT查询。然而,现在我正在创建一个MySQL,然后逐渐添加内容。这是当数据库顺序变得随机。
我已经通过使用ALTER TABLE ... ORDER BY查询克服了这个问题,但是我很好奇,因为在第一种情况下是有顺序的,现在看起来非常随机。
7条答案
按热度按时间jm81lzqq1#
默认顺序是执行insert语句的顺序。除非行之间存在层次关系,否则插入顺序是无关紧要的。如果您希望以一致的方式输出,则必须在查询中定义
ORDER BY
子句。pjngdqdw2#
如果要按特定顺序检索行,唯一的确保方法是使用ORDER BY子句。
ej83mcc03#
插入的顺序并不重要,因为在提取数据时,您可能会在查询中使用
ORDER BY
子句。请记住,MySQL用于存储数据,而不一定用于显示数据。pdkcd3nj4#
关系从来不定义顺序,所以你不能依赖它。你可以使用ORDERBY子句来得到想要的结果。
rsl1atfo5#
有一种方法可以保证它们的插入顺序:
:—)
但是您需要了解SQL是一个关系代数,它处理结果集,并且插入内容的顺序并不重要,除非其中一列是某种时间戳,或者您有一个自动递增字段,并且希望为这三行设置特定的顺序,否则插入顺序并不重要(这两个都不是希望控制顺序的好理由)。
当你提取行时,你不能保证任何特定的顺序,除非你指定了你想要的顺序,这样你就不应该关心它们被创建的顺序。如果没有
order by
子句,每次你执行select
时,顺序实际上都会改变。2cmtqfgy6#
即使数据库管理系统不能保证插入的顺序,但它通常是先进先出。
x33g5p2x7#
没有办法(据我所知)强制INSERT语句按照特定的顺序执行,只需要执行一个简单的选择,例如:
也不会总是以相同的顺序返回数据。这是因为MySQL(以及所有其他数据库系统)是用来存储数据的,开发人员需要适当地查询数据。幸运的是,有许多不同的方法来排序、限制和选择数据,例如: