sql - 如何在 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。
解决方案
你可以使用这个查询
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)
丢弃第一行。
推荐阅读
- python - 如何使 JSON 文件自动更新?
- proxy - 您如何在 squid 代理中轮换代理/具有动态逻辑?
- python - 词干并将输出保存到文本文件
- sql - 具有访问权限从以前记录中的一个字段中检索多个值,以便在新记录中的不同字段中使用
- anaconda3 - /anaconda3/lib/python3.7/site-packages/ 中缺少 gast-0.4.0
- javascript - 使用@material-ui/lab 的DataGrid 组件,如何访问当前的活动过滤器?
- java - 如何使用 JavaFX 创建一个 nonogram 板
- javascript - 我需要使用绑定调用 window.requestAnimationFrame
- python - Groupby 带有列的掩码
- javascript - 基于来自 websocket 的数据的 Angular 客户端通知