A喜欢B,但B不喜欢A?

时间:2011-03-09 23:18:43

标签: sql postgresql

如果我的桌子名为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。

2 个答案:

答案 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