我有一个粉丝表
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这样做,所以我会把问题打开。
答案 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
它看起来更好,至少在我看来更容易理解。