首页 > 解决方案 > 如何在 PostgreSQL 中找到序列中的空白?

问题描述

我有一个带有 id 和 number_col 的项目表。Stackoverflow 上有很多关于寻找 ID 差距的问题,但我正在寻找的是数量上的差距。例如,如果我有 3 个项目:

编号 | number_col
================
1 | 1
1 | 2
1 | 4

我需要一个返回 id = 1, number_col = 3 缺失的 SQL 查询。查询应该查看每个 id 的 number_col 中的最大值。由于在我的示例中 4 是 id 1 的最大 number_col 值,因此它不应该返回 1,缺少 5。

标签: sqlpostgresql

解决方案


你可以使用这个查询

select * 
from table_name 
where col_name - 1 NOT IN (select col_name from table_name) 
GROUP BY col_name having col_name > MIN(col_name);

GROUP BY col_name having col_name > MIN(col_name)丢弃第一行。


推荐阅读