0

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

USERS 
-id
-name
-groupid

GROUP 
-id
-name

我想返回所有用户以及他们的组名和组 ID。它应该是组 id 字段的外部连接,对吗?

4

3 回答 3

2

一个简单的 INNER JOIN 就足够了:

SELECT `USERS`.*, `GROUP`.name AS group_name
FROM `USERS`, `GROUP`
WHERE `USERS`.groupid = `GROUP`.id
于 2012-07-01T17:23:49.383 回答
2

你会想看看JOIN声明

用我的手机做这个,所以请原谅任何适度不正确的语法,但有些东西很长

编辑:其他人的语法更好。这里为时过早

于 2012-07-01T17:25:28.780 回答
1

您可以使用LEFT JOINbetween usersandgroups以便不在组中的用户仍然显示在结果集中,但组名和 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 JOIN 两个表并从结果集中排除用户“NotInGroup”。INNER

于 2012-07-01T20:08:38.240 回答