0

假设我有这些表:我的 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)

4

3 回答 3

3

试试这个:

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

你可以在这里摆弄这个

于 2012-09-11T17:00:05.327 回答
1
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 AND ug.user_id =2 

当 where 子句中有条件时,将左连接变为内连接。

于 2012-09-11T16:44:52.143 回答
0
SELECT table_group.*, user_group.user_id, IFNULL(user_group.is_active, 0)
FROM table_group
LEFT JOIN user_group ON table_group.id = user_group.group_id
于 2012-09-11T16:11:00.013 回答