获取共享关联表中其他条目的条目?

时间:2013-05-21 07:33:05

标签: mysql

我有两个表:用户和兴趣。

兴趣包括兴趣(例如“足球”)和用户ID。

我想查询用户并获得至少共享3个兴趣的所有其他用户,但我不知道如何有效地执行此操作。

如何编写SQL以“获取用户的兴趣并获取至少共享其中三个兴趣的所有其他用户”?

感谢。

1 个答案:

答案 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。维护更符合逻辑。