我有两个表:用户和兴趣。
兴趣包括兴趣(例如“足球”)和用户ID。我想查询用户并获得至少共享3个兴趣的所有其他用户,但我不知道如何有效地执行此操作。
如何编写SQL以“获取用户的兴趣并获取至少共享其中三个兴趣的所有其他用户”?
感谢。
答案 0 :(得分:1)
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)
和`interest(interest,user_id)'。取消注释包含用户名。
考虑将兴趣作为ID引用而不是VARCHAR
。维护更符合逻辑。