2011-09-17 4 views
16

자체 조인을 사용하여 sqlite에서 간단한 쿼리를 작성하려고합니다. 비용이 같은 제품의 모든 ID 쌍을 원하지만 고유 한 쌍을 원합니다 (즉 동일한 순서로 다른 순서로 두 번 나열하지 않음). 는 여기에 내가있어 무엇 :셀프 조인에서 고유 한 쌍을 선택하십시오.

I :

SELECT b1.Id, b2.Id 
FROM Basic AS b1 
LEFT JOIN Basic AS b2 
ON b1.cost = b2.cost 
WHERE b1.Id != b2.Id 
AND b1.Cost = 5; 

그래서 내가 DISTINCT와 GROUP BY의 다른 조합하지만 난 여전히 점점 dupicate 쌍을 시도했습니다

23 | 101 
23 | 205 
24 | 103 
101 | 23 <-- Duplicate! 

뭔가를 얻을 시도해 봤어.

SELECT DISTINCT bp1.Id, bp2.Id ...

& ... = 5 GROUP BY bp1.Id, bp2.Id;

중복 쌍을 제거하려면 어떻게해야합니까? 어떤 아이디어?

감사합니다. 당신의 WHERE 절에 <

답변

36

변경 != 가장 낮은 ID가 항상 먼저 오는 것을 보장하기 위해 :

WHERE b1.Id < b2.Id 
+0

기준을 충족 식별자의 1 개 이상의 세트가있는 경우이 작동하지 않습니다. –