2015-02-06 5 views
-1

ID, 이름, 가격 및 인력 인수가있는 테이블이 있습니다. 난 단지 모든 별개의 것들을 선택해야하지만, ID는 항상 다르고 내 목표를 복잡하게 만들고있다. (나는 동적 인 페이지로 작업하기 위해 ID를 사용한다.) id가이 아닌 다른 모든 인수를 선택해야한다. 내가 이해하기를 바란다. 이 문제를 해결할 방법이 있습니까?모든 열 선택 하나의 열이 DISTINCT가 아닌 경우

고마워요. 예를 들어

는 :

ID | NAME | PRICE | PEOPLE 
1 | beef | 9 | 2 
2 | beef | 5 | 1 
3 | beef | 9 | 2 
4 | pork | 6 | 1 

Result: 

ID | NAME | PRICE | PEOPLE 
1 | beef | 9 | 2 
2 | beef | 5 | 1 
4 | pork | 6 | 1 

이미이 문제를 해결했다.

SELECT every.name, every.price, every.people, every.id 
FROM 
(SELECT * FROM sometable) AS every 
INNER JOIN 
(SELECT DISTINCT name, price, people FROM sometable) AS unique 
ON (every.name = unique.name AND every.price=unique.price AND every.people=unique.people); 
+1

'DISTINCT'가 전체 행 집합에 적용되기 때문에 불행히도 충분히 명확하지는 않습니다. 테이블에 작은 행의 샘플을 게시하고 입력 행 집합이 주어지면 쿼리 출력을 원하는 샘플과 함께 게시하면 도움이됩니다. –

+0

ID를 포함시키지 않으려는 경우 선택에서 해당 ID를 제외하십시오. ID가 필요한 경우 여러 행이 표시됩니다. – jpw

+0

SELECT에서 MAX (id)와 같은 집계를 사용하고 다른 열에서는 GROUP BY를 사용할 수도 있습니다. –

답변

1

당신은 같은 테이블에서 두 개의 데이터 세트 (uniqall)를 만들고 그에 가입하실 수 있습니다 다음은 쿼리입니다. 별개의 행만 uniq에서 가져올 수 있습니다. 따라서 세 가지 속성과 모두 일치하는 all의 항목에는 가능한 ID가 하나뿐임을 확신 할 수 있습니다.

SELECT * FROM 
(SELECT id, name, price, people FROM sometable) as all 
INNER JOIN (SELECT DISTINCT(name, people, price) FROM sometable) as uniq ON 
(all.name = uniq.name AND all.price = uniq.price AND all.people = uniq.people) ; 
+0

정말 고마워요. 문제가 있었지만 방금 해결했습니다. 정말 고마워. –

관련 문제