假设您具有以下架构:
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
SELECT D.ID FROM Data D WHERE NOT EXISTS(SELECT 1 FROM Data WHERE D.ID = CXL)