首页 >数据库 >mysql教程 >如何查找 MySQL 自动增量列中缺失的序列号?

如何查找 MySQL 自动增量列中缺失的序列号?

Barbara Streisand
Barbara Streisand原创
2025-01-12 09:15:43617浏览

How to Find Missing Sequential Numbers in a MySQL Auto-Increment Column?

查找MySQL中连续编号的缺口

在本查询中,发帖者在一个表的自动递增列中遇到缺失值,尽管没有重复值。问题的目标是识别并返回缺失数字的值,这些值可能不是连续的,例如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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn