当前位置: 首页 > 面试题库 >

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

徐博雅
2023-03-14
问题内容

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

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等

这可能吗?


问题答案:

ConfexianMJS 在性能方面提供 了更好的
答案。

(不尽快)的答案

以下版本适用于任何大小的表格(不仅限于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


 类似资料:
  • 问题内容: 我正在尝试获取1到2000万之间的序列号表。(或0到2000万) 对于要解决这个常见问题的MySQL兼容解决方案有多么困难,我感到非常震惊。 与此类似:在MySQL中创建“数字表” 但是答案只有一百万。我不是很了解位移计算。 我已经看到了许多SQL答案,但是大多数答案都是针对非MySQL的数据库,因此由于缺乏对MySQL和另一个MySQL的了解,所以我无法采用该代码。 请确保您发布的代

  • 问题内容: 我得到了一些“ 锻炼程序” 内容,这些内容将按顺序显示给用户。下面显示了最简单形式的示例。 通常,这些表至少要包含100行/练习,并且大约有300个表(针对不同标准的不同练习)。我们没有任何前端,可以直接使用 _dbForge Studio_数据库编辑器更新数据库。 以前的开发人员已经设计了表格,以便唯一ID列也可用作序列号。它也构成url的一部分。例如xxx / exercise /

  • 问题内容: 如何检查字符串是否包含空格字符,空格或“”。如果可能,请提供一个Java示例。 例如: 问题答案: 要检查字符串是否 包含空格,请 使用并调用它的find方法。 如果要检查它是否 仅包含空格, 则可以使用:

  • 我试着找到联系人的号码 我有以下内容: 或者,如果不可能在每个独立的字段上显示,则至少在“联系人”部分上显示一个不同的编号,如第3个联系人: 联系人的XSD类型如下所示: 包含XSD联系人的我的XSD类型(AdminTharkeholder)如下所示:

  • 问题内容: 我正在使用从Excel导入一些数据的MySQL数据库。数据包含非ASCII字符(破折号等)以及隐藏的回车符或换行符。有没有办法使用MySQL查找这些记录? 问题答案: 这完全取决于您定义为“ ASCII”的内容,但是我建议尝试这样的查询变体: 该查询将返回columnToCheck包含任何非字母数字字符的所有行。如果还有其他可接受的字符,请将其添加到正则表达式中的字符类。例如,如果句点

  • 问题内容: 我在表中添加了一个空列,现在我想在其行中插入序号。是否可以使用SQL做到这一点? 问题答案: 运行以下查询以使列中的值增加: