我有一个名为“friends”的表,其中“followed”是已被跟踪的用户的id,“follower”是已执行以下操作的用户的id,如下所示:

id  |  followed  |  follower
------------------------------
1   |     34     |    67
2   |     89     |    65
3   |     67     |    34
4   |     51     |    12
5   |     78     |    18
6   |     18     |    78

我可以很容易地运行显示用户在跟踪谁的查询和显示用户在跟踪谁的查询,但我希望能够运行一个显示友谊在哪里得到回报的查询,例如:
SELETCT * FROM friends WHERE
 -- follower and followed have followed each other

所以对于上面的,这将返回id 1和5(或者3和6)。
如何在单个查询中实现此匹配?

最佳答案

检查这个fiddle
只需在下列条件下使用join

 select * from
 temp t1 join temp t2
     where t1.follower=t2.followed
     and t1.followed=t2.follower

09-25 23:28