gpt4 book ai didi

mysql - 获取 LEFT JOIN 中共同好友的数量

转载 作者:行者123 更新时间:2023-11-29 11:33:45 25 4
gpt4 key购买 nike

我有两张 table :

用户:

id | user | fname | sname | photo
1 | Igor | Igor | Souza | profile.jpg
2 | John | John | Jhow | pic.png
3 | Lucas| Lucas | Coll | photo.jpg

friend :

id | friend1 | friend2 | status
1 | 1 | 3 | 2
2 | 1 | 2 | 2
3 | 3 | 2 | 2

在好友表中,status = 2 表示他们是好友,friend1 是发送好友请求的用户。

为了选择登录用户的 friend ,我这样做了($userID 对应于访问的用户 ID 个人资料页面):

SELECT u.user, u.fname, u.sname, u.photo
FROM friends f
INNER JOIN users u
ON (u.id = f.friend1 AND f.friend1 <> '$userID') OR (u.id = f.friend1 AND f.friend2 <> '$userID')
WHERE (f.friend1 = '$userID' OR f.friend2 = '$userID') AND f.status = 2

我想计算登录用户 ($userIDLog) 和访问个人资料页面的用户 ($userID) 之间的共同好友。但我不知道如何做到这一点,在 LEFT JOIN 的子查询中使用 count 吗?如果是的话,子查询怎么做?观察:我也需要用户信息(用户)

最佳答案

首先假设$userId = 1并且$userIDLog = 2,现在我们可以找到登录用户的好友。

SELECT friend2 as f FROM friends where friend1 = 1 
UNION SELECT friend1 as f FROM friends WHERE friend2 =1

类似地,其他用户的好友也由

给出
SELECT friend2 as f FROM friends where friend1 = 2 
UNION SELECT friend1 as f FROM friends where friend2 =2

现在,如果您在 f 上加入他们,您就会得到答案。

SELECT COUNT(*) FROM 
(SELECT friend2 as f FROM friends where friend1 = 1
UNION SELECT friend1 as f FROM friends WHERE friend2 =1) AS a
INNER JOIN
(SELECT friend2 as f FROM friends where friend1 = 2
UNION SELECT friend1 as f FROM friends where friend2 =2 ) AS b
ON a.f = b.f

他们唯一的共同好友是 3,并且此查询的答案数 = 1。

关于mysql - 获取 LEFT JOIN 中共同好友的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36973543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com