首页 > 解决方案 > 比较同一表中的两列,反之亦然

问题描述

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

数据是这样的 在此处输入图像描述

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

标签: sql

解决方案


这是使用的通用方法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检查的原因。根据您的数据库,这可能会被压缩。


推荐阅读