我有一个数据库(user_interests)设置了 3 个字段:i_id(唯一)、interest_id、uid。
然后第二个数据库(兴趣)设置了兴趣:interest_id(唯一),interest_name
我想执行 SQL 查询以返回两个用户的共同兴趣列表:用户 A(个人资料的所有者)和用户 B(您/个人资料的查看者)。我想我需要查询 user_interests,然后 JOIN interests 以获得兴趣的名称。
SELECT user_interests.i_id, user_interests.uid, interests.interest_name
FROM databases.user_interests
LEFT JOIN databases.interests
ON interest.interest_id = user_interest.interest_id
WHERE _______________
我对 where 子句感到困惑(如果这是正确的做法的话)。我的目标是从 user_interests.interests 获取 interest_id,其中 user_interests.uid 既是 A 又是 B(在不同的行中)。
我看到了这个链接,但无法弄清楚我到底错过了什么:Group by x where y = A and B and C
最佳答案
我会通过加入两个 user_interests 副本来解决这个问题,一个是为用户 A(个人资料所有者)过滤的,另一个是为用户 B(个人资料查看者)过滤的。
SELECT *
FROM interests I
INNER JOIN user_interests A ON
A.interest_id = I.interest_id
AND A.user_id = {profile owner}
INNER JOIN user_interests B ON
B.interest_id = I.interest_id
AND B.user_id = {profile viewer}
或者,根据您提供的代码段,您可以使用诸如...之类的内容来完成 where 子句。
SELECT * FROM interests
WHERE interest_id in (SELECT interest_id
FROM users
WHERE user_id = A)
AND
interest_id in (SELECT interest_id
FROM user_interests
WHERE user_id = B)
希望其中一个对您有用!让我知道是否可以澄清
关于MySQL : Problem in writing where clause according to scenario,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6543509/