开发者社区> 问答> 正文

如何在mysql中找到顺序编号中的空白?

我们有一个带有表的数据库,该表的值是从另一个系统导入的。有一个自动增量列,没有重复的值,但缺少值。例如,运行以下查询:

select count(id) from arrc_vouchers where id between 1 and 100 应该返回100,但返回87。我可以运行任何查询来返回缺失数字的值吗?例如,可能存在ID为1-70和83-100的记录,但是没有ID为71-82的记录。我想返回71、72、73等

这可能吗?

展开
收起
保持可爱mmm 2020-05-11 11:03:28 374 0
1 条回答
写回答
取消 提交回答
  • 以下版本适用于任何大小的表格(不仅限于100行):

    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 gap_starts_at -当前差距的第一个ID gap_ends_at -当前间隙中的最后一个ID来源:stack overflow

    2020-05-11 11:03:39
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像