我有以下两个表“用户”和“组”:MySQL的 - 选择组和用户都在同一个查询
USERS
-id
-name
-groupid
GROUP
-id
-name
我想返回所有用户与他们的组名和组ID一起。它应该是一个外部连接组ID字段正确?
我有以下两个表“用户”和“组”:MySQL的 - 选择组和用户都在同一个查询
USERS
-id
-name
-groupid
GROUP
-id
-name
我想返回所有用户与他们的组名和组ID一起。它应该是一个外部连接组ID字段正确?
您可以使用和groups
一个LEFT JOIN
之间users
让谁一组中没有用户在结果集中仍然显示,但与组名和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
在上面的查询将INNER JOIN两个表,并排除在结果集的用户“NotInGroup”更改LEFT
到INNER
。
一个简单的INNER JOIN应该足够:
SELECT `USERS`.*, `GROUP`.name AS group_name
FROM `USERS`, `GROUP`
WHERE `USERS`.groupid = `GROUP`.id
你会想看看JOIN
声明
从手机这样做,所以请原谅任何温和不正确的语法,但一些长的行
编辑:其他人的语法更好。还为时过早这里
是否所有用户都分配到了一组?我相信你需要一个外连接,如果你还想让users.groupid为空的用户返回。 – AllInOne