Mysql SQL请求左连接

Mysql SQL请求左连接,mysql,sql,request,left-join,Mysql,Sql,Request,Left Join,假设我有这些表格: 要获得预期结果,我的sql请求应该是什么 表用户组: group_id | user_id | is_active 1 2 1 1 3 1 2 2 1 4 2

假设我有这些表格: 要获得预期结果,我的sql请求应该是什么

表用户组:

group_id          |   user_id       |   is_active
1                          2               1
1                          3               1
2                          2               1
4                          2               1
表组:

id |     name
1       group1
2       group2
3       group3
4       group4
5       group5
6       group5
预期结果

group_id       |      name      | user_id    |   is_active
 1                   group1         2               1
 2                   group2         2               1
 3                   group3         2               0
 4                   group4         2               1
 5                   group5         2               0
 6                   group6         2               0
我试过了

SELECT g.id, g.name, ug.user_id, ug.is_active
FROM group g
LEFT OUTER JOIN user_group uc ON ug.group_id = g.id
WHERE ug.user_id =2
但是我只拥有用户2所在的组(所以是group1、group2和group4)

当where子句中有条件时,可以将左连接转换为内部连接

当where子句中有条件时,可以将左连接转换为内部连接。

尝试以下操作:

SELECT  id ,
        name ,
        COALESCE(user_ID, 2) user_id ,
        COALESCE(is_active, 0) is_active
FROM    tableGroup
        LEFT JOIN user_group ON id = group_id
                                AND user_Id = 2
你可以摆弄这个

试试这个:

SELECT  id ,
        name ,
        COALESCE(user_ID, 2) user_id ,
        COALESCE(is_active, 0) is_active
FROM    tableGroup
        LEFT JOIN user_group ON id = group_id
                                AND user_Id = 2

你可以摆弄这个

@Mathieu-由于左连接,这会将空值分为3、5和6组。因此与您的预期输出不匹配。我错过了什么?检查一下。你是否误解了要求它们为空而不是2-0的问题?@Kash似乎是对的,我没有注意到这一部分。如果你同意,请取消选择我作为正确答案,并检查他的答案。是的,我想出了如何通过联合自己完成这项工作。谢谢你Kash我查对了你是正确的answer@Mathieu-由于左连接,这会将空值放入组3、5和6中。因此与您的预期输出不匹配。我错过了什么?检查一下。你是否误解了要求它们为空而不是2-0的问题?@Kash似乎是对的,我没有注意到这一部分。如果你同意,请取消选择我作为正确答案,并检查他的答案。是的,我想出了如何通过联合自己完成这项工作。谢谢你Kash我查过你的答案了
SELECT  id ,
        name ,
        COALESCE(user_ID, 2) user_id ,
        COALESCE(is_active, 0) is_active
FROM    tableGroup
        LEFT JOIN user_group ON id = group_id
                                AND user_Id = 2