SQL故障筛选结果

时间:2019-05-17 17:33:33

标签: sql sql-server

我目前正在获得如下结果:

Row    | ParentLevel | ChildLevel | 
1      |     1       |     1      |   
2      |     2       |     2      |  
3      |     2       |     3      |  

我只希望当父母和孩子都没有匹配的结果时出现一行。

在这种情况下,第1行很好,因为这是父级1出现的唯一时间

第2行,我希望不出现,因为第3行在那里,并且父母和孩子在第3行中不匹配。

是否可以在where语句中设置?

1 个答案:

答案 0 :(得分:0)

您可以使用not exists

select t.*
from t
where t.ParentLevel <> t.ChildLevel or
      not exists (select 1
                  from t t2
                  where t2.ParentLevel = t.ParentLevel and t2.ParentLevel <> t2.ChildLevel
                 );