mysql - 在同一查询中选择所有组和用户

时间:2012-07-01 17:14:54

标签: mysql sql

我有两个表'USERS'和'GROUPS':

USERS 
-id
-name
-groupid

GROUP 
-id
-name

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

3 个答案:

答案 0 :(得分:2)

简单的INNER JOIN就足够了:

SELECT `USERS`.*, `GROUP`.name AS group_name
FROM `USERS`, `GROUP`
WHERE `USERS`.groupid = `GROUP`.id

答案 1 :(得分:2)

您将要查看JOIN声明

通过我的手机执行此操作,请原谅任何中等程度上不正确的语法,但需要很长一段时间

编辑:其他人的语法更好。这太早了

答案 2 :(得分:1)

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

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”。