我有两个表:用户和兴趣。
interests包含一个兴趣(例如:"football")和用户id。
我想查询一个用户,并得到所有其他用户谁共享至少3个利益,但我不知道如何做到这一点有效。
我如何为"获取用户的兴趣并获取共享至少三个兴趣的所有其他用户"编写SQL ?
谢谢。
SELECT i.interest, i.user_id, COUNT(*) AS amount
# , u.username
FROM interests AS i
LEFT JOIN interests AS i2
ON i.interest LIKE i2.interest
# LEFT JOIN users AS u
# ON i2.user_id = u.id
WHERE i.user_id = 1
GROUP BY i.interest
HAVING amount >= 3
这将假设您有users (id, username)
和' interests (interest, user_id) '。取消包含用户名的注释。
考虑将兴趣作为ID参考而不是VARCHAR
。