【发布时间】:2012-06-19 14:21:38
【问题描述】:
您有一个表table1,其中包含id 列,即int(11), not null, auto_increment,从1 开始。
假设您有 10,000 条记录。很明显,最后一条记录的 id 是 10,000。 删除 3 条记录后,表中有 9,997 条记录,但最后一条记录 id 值仍为 10,000(如果最后一条记录未删除)。
如何显示使用 1 条 sql 查询删除了哪些记录?
谢谢。
【问题讨论】:
-
创建一个包含 10,000 个连续值的表作为查找表。然后从查找中选择目标表中不存在的所有记录。 (这总是比尝试动态生成丢失的 ID 更快。)
-
如果你的 DMBS 有类似 generate_series() 的函数(我不认为 mysql 有),你可以使用它,基于 {min,max},而不是硬连线压延 table .
-
+1 因为我通过回答它学到了一些新东西 :) 一个不错的问题 :)
标签: mysql sql select gaps-and-islands