2009-12-03 2 views
1

그룹에 속한 모든 사용자를 선택하려고합니다. 내 group_members 테이블은 사용자가 속한 그룹을 추적합니다. 사용자가 여러 그룹에 속할 수 있기 때문에 MySQL : 결합으로 중복을 제외하는 방법은 무엇입니까?

group_members (group_id , user_id) 

그래서 내 group_members 테이블에하는 user_id 여러 번 나타날 수 있습니다. 각 user_id에 대한 사용자 정보를 가져 오려면 innerJoin()을 사용하고 있습니다. 그러나 검색 할 때 한 번만 사용자 이름을 표시하려고합니다.

어떻게하면됩니까?

답변

3

DISTINCT을 사용하십시오. 다음 중 하나를

select distinct u.* from users u 
    join group_members gm on gm.user_id = u.user_id 
where ... 

또는

select * from users u 
where u.user_id in (select user_id from group_members where ...) 
    ... 

실행 빨리 귀하의 경우 어느 쪽이 볼 두 쿼리에 "SELECT를 EXPLAIN".

관련 문제