【问题标题】:Mysql INNER JOIN query with multiple AND condition in same tableMysql INNER JOIN 查询在同一个表中具有多个 AND 条件
【发布时间】:2022-12-11 10:31:04
【问题描述】:

Inner join query 我有 2 个表 user_infouser_role_info。我想选择 role_id 1 中的那些用户,以及 role_id 2 到 4 中的至少 1 个用户。

我试过的

SELECT * FROM `user_info` a 
INNER JOIN `user_role_info` r ON r.`user_id` = a.`user_id`
WHERE  r.`role_id`= 1 AND r.`role_id` BETWEEN 2 AND 7 GROUP BY a.id
HAVING COUNT(*) > 1; 

从图片中 user_id 1 & 2 应该是正确的结果 & user_id 4 不应该在结果中。 但是这个查询并没有为我提供正确的结果。

【问题讨论】:

    标签: mysql database


    【解决方案1】:

    您应该在 HAVING 子句中断言角色 ID。像下面这样的东西应该工作:

    SELECT a.user_id
    FROM user_info a 
    INNER JOIN user_role_info r
        ON r.user_id = a.user_id
    GROUP BY a.user_id
    HAVING SUM(r.role_id = 1) > 0 AND
           SUM(r.role_id IN (2, 3, 4, 5, 6, 7)) > 0;
    

    【讨论】:

      猜你喜欢
      • 2015-01-19
      • 2018-06-26
      • 2023-03-17
      • 2015-04-28
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 2013-02-27
      • 1970-01-01
      相关资源
      最近更新 更多