首页 >数据库 >mysql教程 >如何查找 MySQL 表中丢失的顺序 ID?

如何查找 MySQL 表中丢失的顺序 ID?

DDD
DDD原创
2024-11-30 08:21:11956浏览

How to Find Missing Sequential IDs in a MySQL Table?

查找 MySQL 表中丢失的 ID

在关系数据库表中,确保数据完整性至关重要,包括维护唯一且连续的 ID。然而,ID 序列中的间隙可能由于缺失或插入而出现。本文解决了从 MySQL 表中检索丢失 ID 的挑战,并提供了解决此问题的详细查询。

问题陈述

考虑以下 MySQL 表:

ID | Name
1  | Bob
4  | Adam
6  | Someguy

如您所见,缺少 ID 号(2、3 和 5)。任务是构建一个仅返回缺失 ID 的查询,在本例中为“2,3,5”。

解决方案

以下查询检索失踪者ID:

SELECT a.id+1 AS start, MIN(b.id) - 1 AS end
    FROM testtable AS a, testtable AS b
    WHERE a.id < b.id
    GROUP BY a.id
    HAVING start < MIN(b.id)

说明

  • 查询为测试表创建两个别名,a 和 b。
  • 它计算通过从b的最小ID中减去a的ID来丢失范围(在确保a.id小于之后)
  • GROUP BY a.id 根据 a.id 对结果进行分类,代表缺失范围的开始。
  • HAVING start

附加阅读

  • [识别序列间隙MySQL](https://web.archive.org/web/20220706195255/http://www.codediesel.com/mysql/sequence-gaps-in-mysql/)

以上是如何查找 MySQL 表中丢失的顺序 ID?的详细内容。更多信息请关注PHP中文网其他相关文章!

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