2011-08-10 16 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を2回返します(groupID 26とgroupID 87に2回表示されるため)。

グループに表示される回数ではなく、1回だけ返信したい場合はどうすればよいですか?

ありがとうございます。

答えて

2

使用グループ

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 ... 

それは左であるためには必要はありませんがいずれかの参加、あなたの句は、それは、内側がDISTINCT

2

使用参加可能:

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

はこれにあなたのSQLを変更してみてください。

をby句
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) 
関連する問題