【发布时间】:2018-05-11 15:05:46
【问题描述】:
mysql 查找 user2 的好友并获取与 user1 的相互计数(每个 user2 的好友)
表用户
user_id | username
------------------
1 | user1
2 | user2
3 | user3
4 | user4
5 | user5
桌友
user_one_id | user_two_id
------------------------
1 | 2
1 | 4
2 | 3
2 | 4
3 | 1
5 | 2
预期输出 //( user2 friends : check result user_id with user1 to get mutual count)
user_id | mutual_count
------------------------
1 | 2 // user1 and user1 mutual `users(user2,user3,user4)`
3 | 1 // user3 and user1 mutual users(user2)
4 | 1 // user4 and user1 mutual users(user2)
5 | 0 // user5 and user1 -> No mutual users
mysql语句
SELECT users.user_id,
(SELECT count(a.friendID) FROM
( SELECT user_two_id friendID FROM friends WHERE user_one_id = users.user_id
UNION
SELECT user_one_id friendID FROM friends WHERE user_two_id = users.user_id
) AS a
JOIN
( SELECT user_two_id friendID FROM friends WHERE user_one_id = 1
UNION
SELECT user_one_id friendID FROM friends WHERE user_two_id = 1
) AS b
ON a.friendID = b.friendID
) as mutual_count
FROM friends LEFT JOIN users
ON friends.user_one_id = users.user_id or friends.user_two_id = users.user_id
WHERE (friends.user_one_id = 2 OR friends.user_two_id = 2) AND users.user_id != 2
我得到的错误 'where 子句'中的未知列'users.user_id' 获取mutual_count的问题子查询无法知道users.user_id
任何帮助表示赞赏
【问题讨论】:
-
我找到了 user2 的好友,那为什么 user2 会出现在结果中?
-
和user1的结果好友相互计数