小编典典

涉及取消时,您如何找到“良好” ID?

sql

假设您具有以下架构:

CREATE TABLE Data
(
  ID INT,
  CXL INT
 )

 INSERT INTO Data (ID, CXL)
 SELECT 1, NULL
 UNION
 SELECT 2, 1
 UNION
 SELECT 3, 2
 UNION
 SELECT 5, 3
 UNION 
 SELECT 6, NULL
 UNION
 SELECT 7, NULL
 UNION
 SELECT 8, 7

列CXL是取消特定ID的ID。因此,例如,表中ID:1的第一行一直很好,直到被ID:2取消(CXL列)为止。ID:2很好,直到被ID:3取消为止。在被ID:5取消之前,ID:3一直很好,因此在此序列中,最后一个“良好”
ID为ID:5。

我想找到所有的“良好” ID, 因此在此示例中为:

Latest GOOD ID
     5
     6              
     8

如果您想玩这个,这是一个小提琴:http :
//sqlfiddle.com/#!6/68ac48/1


阅读 170

收藏
2021-04-22

共1个答案

小编典典

SELECT D.ID 
FROM Data D
WHERE  NOT EXISTS(SELECT 1 
                  FROM Data WHERE D.ID = CXL)
2021-04-22