2017-06-02 115 views
2

我有一个表有三列ID,follower_id,following_id和我只有一个的ID 或现在我想的记录假设user1后续到user2user2后续到user1在一个查询如何获得记录单查询

表结构

---------------------------------- 
|id | follower_id | following_id | 
---------------------------------- 
|1 | 101  | 105   | 
|2 | 105  | 102   | 
|3 | 105  | 101   | 
|4 | 105  | 103   | 
---------------------------------- 

结果应该是1 - > 101 - > 105或3-> 105-> 101

+1

什么是这个问题? – Jens

+0

我希望这些结果(结果应该是1 - > 101 - > 105或3-> 105-> 101)来自上表。 –

+0

为什么你需要这样的结果? '[101,105]'具有相同的信息。 –

回答

3

如果你想去的地方追踪者和追踪匹配,你可以使用自加入

select t1.* from my_table as t1 
inner join my_table as t2 
where t1.follower_id = t2.following_id 
and t1.following_id = t2.follower_id 
0

可以使用leastgreatest做到这一点。

select * from t 
where (least(follower_id,following_id),greatest(follower_id,following_id)) 
in (select least(follower_id,following_id),greatest(follower_id,following_id) 
    from t 
    group by least(follower_id,following_id),greatest(follower_id,following_id) 
    having count(*) > 1) 
0

可能是这样的查询将帮助你行....

SELECT * 
FROM Yourtable A 
WHERE EXISTS (SELECT 1 FROM Yourtable B WHERE B.follower = A.following) 
AND EXISTS (SELECT 1 FROM Yourtable C WHERE C.following = A.follower) 
相关问题