sql - 在一个表中查找缺失记录之前或之后的第一条记录
问题描述
我只有一个大表 Samples,其中包含 Id 和 Values 列。在每个间隙的表中丢失记录之前,我只需要获取一条记录。我需要帮助来构建查询。
桌子:
Id | Values
---------
1 | 45
2 | 45
3 | 44
5 | 89
6 | 21
7 | 59
9 | 23
10 | 78
11 | 12
12 | 16
15 | 19
查询结果:
Id | Values
---------
3 | 44
7 | 59
12 | 16
解决方案
像这样的东西:
SELECT s1.*
FROM samples s1
WHERE NOT EXISTS (SELECT id
FROM samples s2
WHERE s2.id = s1.id + 1)
为了避免总是选择最后一行,您应该添加:
AND EXISTS (SELECT id
FROM samples s3
WHERE s3.id > s1.id)
推荐阅读
- flutter - 如何在颤动的列中展开容器而不溢出?
- r - 编写函数,计算列子集的行均值并创建列名
- grafana - 如何将查询结果传递到 Grafana 中的可视化 URL?
- amazon-dynamodb - 使用 FilterExpression 更新 DynamoDb 中的表
- c# - ShouldQuote 将引号放在一行中的所有字段周围,而不是我需要的那些
- django - Django Api 项目(邮递员方法抛出错误)
- docker - docker zookeeper 和 kafka 中的 SASL 身份验证
- php - WooCommerce 管理员订单添加可编辑元数据并保存
- ios - 问题库 react-native-contacts 不工作 ios
- java - SpringApplicationConfiguration 无法解析为类型