sql查询获取已删除的记录

Har*_*iec 13 mysql sql select gaps-and-islands

您有一个table1包含id列的表,即int(11), not null, auto_increment从1开始.

假设您有10,000条记录.很明显,最后一条记录的ID是10,000.删除3条记录后,表中有9,997条记录,但最后一条记录ID值仍为10,000(如果最后一条记录未删除).

如何使用1 sql查询显示已删除的记录?

谢谢.

sam*_* yi 5

我认为最简单的方法是使用只有id的虚拟/临时表.1-1000然后离开加入该表.

但是一旦完成,请务必从虚拟/临时表中删除"已删除"记录.否则,他们每次都会出现.

>>编辑<< 你可以做自己加入,弄清楚你是否缺少ID ...

select a.id + 1 MissingIds
from <table> a
left join <table> b
  on a.id = b.id - 1
where b.id is null
  and a.id < 10000
Run Code Online (Sandbox Code Playgroud)

  • 很容易,当然,但不是非常专业的imo :) (3认同)
  • @AndriusNaruševičius不同意.有时候使用失败证明方法是专业的,而不是过于复杂的方法. (3认同)
  • @AndriusNaruševičius究竟什么不专业呢?太快太容易了,所以你不能给你的客户充电几个小时??? (3认同)
  • 不要吝啬.请定义"专业".每种解决方案对每种情况都是独特的 不是说这是最好的解决方案,但由于它不是"专业"而解雇它是不对的.解雇它是因为有一个更好的可扩展/可管理的解决方案......现在我们正在烹饪! (3认同)