laravel 通过MySQL查询获取相互关注的用户

brccelvz  于 2022-12-01  发布在  Mysql
关注(0)|答案(1)|浏览(202)

我想得到两个用户的nameemailid,他们互相关注并且状态等于“A”。
我的friends表截图:

注:在上面的屏幕截图中,follower_idfollowing_id都是usersid

nkcskrwz

nkcskrwz1#

我通过以下查询实现了我的目标:

SELECT 
    f1.id as f1_friendship_id, f1.follower_id as f1_user_id,
    u1.full_name as f1_full_name, u1.email as f1_email,
    f2.id as f2_friendship_id, f2.follower_id as f2_user_id,
    u2.full_name as f2_full_name, u2.email as f2_email
FROM 
    (friends f1 INNER JOIN users u1 ON f1.follower_id = u1.id ), 
    (friends f2 INNER JOIN users u2 ON f2.follower_id = u2.id)
WHERE 
    f1.follower_id = f2.following_id
    AND f1.following_id = f2.follower_id
    AND f2.id <> f1.id
    AND f1.status = 'A' AND f2.status = 'A';

在上面的查询中,为了分离那些相互跟随的用户,我使用了self-join,为了附加用户信息,我使用了inner-join
输出量:

相关问题