获得MySQL的相互联系

时间:2015-10-01 14:49:50

标签: mysql

我有一个粉丝表

followers: id, follower_id, subject_id,...

我希望在主题跟随粉丝的情况下获得相互关注者的联系

我尝试了JOIN

SELECT t1.`subject_id`, t2.`follower_id`
FROM
`followers` t1
JOIN
`followers` t2
ON
t1.`follower_id` = t2.`subject_id`
WHERE
t1.`follower_id` = 12
OR
t2.`subject_id` = 12
GROUP BY 
t1.`id`,
t2.`id`

但是我得到了不一致的结果

我想得到:

connection_id< - 此用户被跟踪并跟进

编辑:

我在想这个。

我使用子查询得到了我需要的结果

SELECT * FROM `followers` WHERE
 `follower_id` = 12
 AND
 `subject_id` IN (SELECT `follower_id` FROM `followers` WHERE `subject_id` = 12)

 GROUP BY `subject_id`

我仍然想知道如何使用JOIN这样做,所以我会把问题打开。

1 个答案:

答案 0 :(得分:0)

SELECT fol2.followerid, fol1.subjectid
FROM followers fol1
JOIN followers fol2 
     ON fol1.subjectid = fol2.subjectid 
     AND fol1.followerid <> fol2.followerid
WHERE fol1.followerid = 12

因为您只有在类似的人之后,有类似的喜欢,您应该从要加入的列表中删除该人自己的ID。否则它会显示&#34;我们注意到你喜欢你喜欢的东西&#34;看起来有点傻。

非常简单,你所做的就是加入同一个主题。

我不确定为什么要进行分组,因为它不应该返回任何重复内容,因此除了减慢脚本速度之外,它不会做任何其他事情。

我知道这是你个人的选择,而不是拥有以下内容:

Followers: id, follower_id, subject_id

我有:

Followings: following_id, user_id, subject_id

它看起来更好,至少在我看来更容易理解。