MySQL : Problem in writing where clause according to scenario

标签 mysql join

我有一个数据库(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/

相关文章:

php - 查找同一列数据的重复项

php - 在 Mac 上的 XAMPP 中连接到 MySQL 数据库

mysql - 锁定选择

php - 如何使用 PHP 指定要搜索的多个列?

sql - 我想在大查询中连接两个具有公共(public)列的表?

mysql - 在 MySQL 中创建简单数据库

mysql - 连接更新时收到错误,语法不正确

python - Pandas dataframe merge 的性能并不比附加到新列表更好

SQL 连接排除数据

mysql - 当查询超过 3 个表时,Left Join 性能太慢