Kshitiz Sharma Asked: 2016-04-30 13:49:04 +0800 CST2016-04-30 13:49:04 +0800 CST 2016-04-30 13:49:04 +0800 CST 选择不存在较小行的行 772 考虑下表数据: ID NAME 1 Kshitiz 2 Aman 5 Aakash 6 Manjeet 这里有 2 到 5 之间的记录缺失。我可以使用什么查询来选择此表中的第 5 行? oracle-11g 2 个回答 Voted Best Answer Martin Smith 2016-04-30T13:57:48+08:002016-04-30T13:57:48+08:00 Oracle 支持LAG,所以你应该能够做类似的事情。 SELECT T.ID, T.NAME FROM ( SELECT ID, NAME, LAG(ID) OVER (ORDER BY ID) AS PREVID FROM YourTable ) T WHERE ID > PREVID + 1; 将 Id 与前一个进行比较,只返回差距大于 1 的。 (未经测试,因为 SQL Fiddle 当前在我尝试创建 Oracle Fiddle 时返回错误) Jmaurier 2016-04-30T14:22:29+08:002016-04-30T14:22:29+08:00 SELECT p2.ID, p2.NAME FROM person p1 INNER JOIN person p2 ON p1.ID = p2.ID+1 WHERE p1.ID <> p2.ID AND p2.ID <> 1 您可以自己加入表格ID = ID+1 仅当AND p2.ID <> 11 是 ID 列中的最低值时,才应该存在。 SQL小提琴示例
Oracle 支持
LAG
,所以你应该能够做类似的事情。将 Id 与前一个进行比较,只返回差距大于 1 的。
(未经测试,因为 SQL Fiddle 当前在我尝试创建 Oracle Fiddle 时返回错误)
您可以自己加入表格
ID = ID+1
仅当
AND p2.ID <> 1
1 是 ID 列中的最低值时,才应该存在。SQL小提琴示例