2009-06-21 3 views
0

두 개의 열, 예를 들어 column1과 column2가있는 표가 있습니다. Column2는 고유하지 않습니다. column2의 각 고유 값에 대해 테이블의 임의 행 하나만을 원하나요?쿼리가 각 별개 열에 대해 임의의 행 하나만 반환 할 수있는 방법은 무엇입니까?

즉 결과 집합에는 column2의 고유 값 개수만큼의 행이 있어야합니다.

예 :

column1 column2 
x   1 
y   2 
z   1 

나는 결과가

column1 column2 
x   1 
y   2 

또는

column1 column2 
z   1 
y   2 

되고 싶지는 SQL을 사용하여이 가능합니까?

답변

1

이 MySQL을 트릭을 할해야이 쿼리 (MySQL은 5에서 테스트) :

select a.column1, a.column2 from (select * from foo b order by rand()) a group by a.column2; 
+0

감사합니다. 대단 하네! –

1

SELECT MAX(column1), column2 FROM yourtablename GROUP BY column2

+0

나를 위해 작동하지 않습니다. 나는 그 일을 성취하기 위해 더 복잡하지만 더 나은 방법이 있어야한다고 믿는다. – Matias

+0

임의의 행이 필요합니다. MAX (column1), column2 항상 특정 행을 반환합니다 생각합니다. –

+0

흠, 때로는 (x, 1)을 반환해야하고 때로는 (z, 1)을 반환해야 함을 의미합니다. – jitter

0

당신은 당신의 행 번호를 다시 끌어와 그것을 그런 식으로 필터링 할 ROW_NUMBER() OVER(ORDER BY column1 asc)처럼 뭔가를 시도 할 수 있습니다.

당신은 당신이 사용하는 SQL 어떤 맛 언급 didnt는 내가 메모리에서이 리콜 해요 -하지만 이런 종류의 일이 오라클에서 작동 9.

관련 문제