如果涉及取消,您如何找到“好”身份证?

时间:2015-03-26 20:01:35

标签: sql sql-server

假设您有以下架构:

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:3是好的,直到它被ID:5取消,所以在这个序列中,最后一个“GOOD”ID是ID:5。

我想找到所有“好”ID 所以在这个例子中它将是:

Latest GOOD ID
     5
     6              
     8

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

2 个答案:

答案 0 :(得分:1)

SELECT D.ID 
FROM Data D
WHERE  NOT EXISTS(SELECT 1 
                  FROM Data WHERE D.ID = CXL)

答案 1 :(得分:0)

select Id 
from data 
where Id not in (select cxl from data where cxl is not null)