2012-07-01 93 views
0

我有以下兩個表「用戶」和「組」:MySQL的 - 選擇組和用戶都在同一個查詢

USERS 
-id 
-name 
-groupid 

GROUP 
-id 
-name 

我想返回所有用戶與他們的組名和組ID一起。它應該是一個外部連接組ID字段正確?

+0

是否所有用戶都分配到了一組?我相信你需要一個外連接,如果你還想讓users.groupid爲空的用戶返回。 – AllInOne

回答

1

您可以使用和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」更改LEFTINNER

2

一個簡單的INNER JOIN應該足夠:

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

你會想看看JOIN聲明

從手機這樣做,所以請原諒任何溫和不正確的語法,但一些長的行

編輯:其他人的語法更好。還爲時過早這裏