如果我的桌子名为Table,看起来像这样:
A B
1 2
3 2
2 1
etc...
这意味着1喜欢2,3喜欢2,2喜欢1 ...假设它比这要大很多,我怎么写一个SQL查询我报告哪里A喜欢B,但B不喜欢A ?
因此,对于这种情况,示例输出应为:
3 2
因为3从关系中喜欢2,但是2不喜欢3。
答案 0 :(得分:6)
SELECT A, B
FROM likes x
WHERE NOT EXISTS (SELECT * FROM likes
WHERE x.A = B AND x.B = A)
答案 1 :(得分:2)
我认为你只需要使用left join
(免责声明:我使用SQL Server而不是postgresql)
select l.A, l.B
from likes l
left join likes nl on l.B=nl.A and l.A=nl.B
where nl.A is null