我有以下两个表“ USERS”和“ GROUPS”:

USERS
-id
-name
-groupid

GROUP
-id
-name


我想返回所有用户及其组的名称和组ID。应该是组ID字段上的外部联接正确吗?

最佳答案

您可以在LEFT JOINusers之间使用groups,以便不在组中的用户仍显示在结果集中,但组名和ID为NULL:

SELECT
    a.*,
    b.name AS group_name
FROM
    users a
LEFT JOIN
    `group` b ON a.group_id = b.id


旁注:确保您将表名group括在反引号中,因为它是保留关键字。

结果集应类似于:

id       |       name       |       group_id       |       group_name
-----------------------------------------------------------------------------
1        |       John       |       5              |       ThisIsGroup5
3        |       Tim        |       3              |       ThisIsGroup3
6        |       NotInGroup |       NULL           |       NULL


在上面的查询中将LEFT更改为INNER会INNER JOIN这两个表并将用户“ NotInGroup”从结果集中排除。

10-06 06:18
查看更多