比较同一表中的两列,反之亦然

时间:2018-08-02 16:23:47

标签: sql

我有一张桌子(数字)。有两列(InitialNumber和FinalNumber)

数据就是这样 enter image description here

我需要一个查询,例如,如果初始数字(10)为最终值(20),那么初始数字(20)应该具有最终值(10),想知道表中的所有不同行。关于数据,我想要一个不相同的数字列表

1 个答案:

答案 0 :(得分:0)

这是使用exists的通用方法:

select * 
from numbers n
where exists (
  select 1 
  from numbers n2 
  where (n.init = n2.final and (n.final != n2.init or n.final is null))
    or (n2.init = n.final and (n2.final != n.init or n2.final is null))
)

这里的问题是null值,因为它们不能正确地用=进行评估-因此进行or检查的原因。根据您的数据库,这可能会被压缩。