2011-08-10 26 views
2

我創建了一個簡單的查詢,其中包含一個JOIN,並且此JOIN'使'一些重複。JOIN導致的複製

表用戶:

UserID Name 
------ ---- 
1  Luis 
2  Andre 
3  Mark 
4  Linda 

表bind_groups:

groupID UserID 
------- ------ 
26  1 
87  2 
87  1 
12  4 
41  4 
6  1 
21  2 
5  3 

SQL查詢:

SELECT users.UserID FROM users 
    LEFT JOIN bind_groups ON users.UserID = bind_groups.UserID 
    WHERE groupID = 26 OR groupID = 87 

結果將是:

UserID 
------ 
1 
2 
1 

正如你所看到的,它返回UserID = 1兩次(因爲它出現兩次,在groupID 26和groupID 87中)。

如果我想返回一次,而不是顯示在組中的次數,我應該怎麼做?

謝謝。

回答

2

使用group by子句

SELECT users.UserID FROM users 
    LEFT JOIN bind_groups ON users.UserID = bind_groups.UserID 
    WHERE groupID = 26 OR groupID = 87 
GROUP BY UserID 
3
select distinct users.UserID from users ... 

沒有必要爲它是一個LEFT JOIN要麼,你的where子句使得它的內部聯接

2

使用DISTINCT:

SELECT DISTINCT users.UserID FROM users 
    LEFT JOIN bind_groups ON users.UserID = bind_groups.UserID 
    WHERE groupID = 26 OR groupID = 87 
2

嘗試修改您的SQL這樣的:

SELECT DISTINCT users.UserID FROM users 
    LEFT JOIN bind_groups ON users.UserID = bind_groups.UserID 
    WHERE groupID = 26 OR groupID = 87 
2

DISTINCT是明確的,但根據表的大小也可以是有用的與IN工作:

SELECT DISTINCT users.UserID FROM users 
    JOIN bind_groups ON users.UserID = bind_groups.UserID 
    WHERE groupID IN(26, 87)