在本查询中,发帖者在一个表的自动递增列中遇到缺失值,尽管没有重复值。问题的目标是识别并返回缺失数字的值,这些值可能不是连续的,例如id 71-82。
更优的解决方案
JustPlainMJS提供的替代方案显着提高了性能。
效率较低的解决方案
对于任何大小的表,请考虑以下方法:
<code class="language-sql">SELECT (t1.id + 1) as gap_starts_at, ( SELECT MIN(t3.id) -1 FROM arrc_vouchers t3 WHERE t3.id > t1.id ) as gap_ends_at FROM arrc_vouchers t1 WHERE NOT EXISTS ( SELECT t2.id FROM arrc_vouchers t2 WHERE t2.id = t1.id + 1 ) HAVING gap_ends_at IS NOT NULL</code>
在本查询中:
gap_starts_at
表示当前缺口中的第一个id。 gap_ends_at
表示当前缺口中的最后一个id。 以上是如何查找 MySQL 自动增量列中缺失的序列号?的详细内容。更多信息请关注PHP中文网其他相关文章!