我有一个包含10条记录和一个ID字段作为主键的表。
我的许多查询也不包括ORDER BY id
。例如,它们看起来像:
SELECT * FROM `branch`
当我错误地删除ID为1
的记录时,我的问题就出现了,然后为了纠正我的错误,我插入了一个具有相同ID和内容的记录。
但现在,在我的所有查询中,后面插入的行是最后一行。
我的意思是,ID的顺序是:2,3,4,5,6,7,8,9,10,1。
我想要的是,让ID按顺序返回,就像在删除之前一样,但我不能在所有查询中添加ORDER BY id
,因为在许多文件中有这么多查询。
请帮帮我, 谢谢,Omry。
答案 0 :(得分:1)
要解决您的问题,您可以SET foreign_key_checks=0
然后删除您的表并重新创建它,按顺序插入ID 1到10的值,然后再次SET foreign_key_checks=1
。这很可能会解决您的问题。
但我的建议是始终使用ORDER BY
。
由于您不能信任SELECT
导致从MySQL返回的记录的顺序。默认情况下,MySQL按照存储它们的顺序返回结果,并将记录存储在找到" hole"的任何位置。
这意味着如果您批量插入它,可能会#34;占用顺序内存分配。现在,如果您从此集合中删除记录,则会创建一个由后续插入占用的洞,并在SELECT
中反映出相同的内容。