我希望我能够解释我在寻找什么。我有一张表如下:
ID | Column A| Column B
1 | 1234 | 9876
2 | 1234 | 8765
3 | 9876 | 1234
4 | 2345 | 3456
5 | 3456 | 2345
规则是,对于列A的每个值=值A和列B =值B,我需要有一行,其中列A =值B,列B =值A.
在这里,我有ID = 1,3,4和5满足这个条件。
我需要拉ID = 2,因为这不符合规则。
此查询是否适用于上述条件:
select * from TABLE1 T1 where T1.ID not in (select ID from TABLE1
where T1.Column A = Column B and T1.Column B = Column A)
有没有更好的方法来编写此查询?
答案 0 :(得分:0)
以下内容应该有效:
SELECT * FROM TABLE1 T1
WHERE NOT EXISTS (SELECT 1 FROM TABLE1 T2
WHERE T1.ColumnA = T2.ColumnB AND
T1.ColumnB = T2.ColumnA)
答案 1 :(得分:0)
使用外部自联接过滤匹配:
select a.*
from table1 a
left join table1 b on a.columna = b.columnb
and a.columnb = b.columna
where b.columnb is null
答案 2 :(得分:-1)
select
a.*
from
Table1 a
join
Table1 b on
a.ColumnA = b.ColumnB and
a.ColumnB = b.ColumnA