0

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

兴趣由兴趣(例如“足球”)和用户 ID 组成。

我想查询一个用户并获取所有其他至少有 3 个兴趣的用户,但我不知道如何有效地做到这一点。

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

谢谢。

4

1 回答 1

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)“兴趣(兴趣,user_id)”。取消注释以包含用户名。

考虑将兴趣作为 ID 引用而不是VARCHAR. 维护起来更合乎逻辑。

于 2013-05-21T07:38:40.000 回答