2013-03-07 2 views
-1

임시 테이블에서 다른 열에 의해 정렬 된 이름 목록을 만듭니다. 왜 현재 위치에서 순서를 사용하지 않는고유 한 순서가 올바르지 않습니다.

Kyle 
John 
Mary 
Brad 

:

@table: 

John, 1 
Mary, 3 
Mary, 5 
Mary, 7 
John, 8 
Kyle, 9 
Brad, 10 

나는 간단한 select * from @table 전화, 그게 내가 무엇을 얻을,하지만 난 select distinct name from @table를 호출 할 때 나는이 얻을? 이건 내가 모르는 SQL 버크인가?

John 
Mary 
Kyle 
Brad 

편집 : 나는 그것이 될 것으로 기대 (그리고 원하는) 추가로 질문 : 제가 원래 테이블에 '에 의해 주문'때문에이 유지되지 왜 기능적 이유가?

+2

'ORDER BY'가 없으면 행 순서가 실제로 존재하지 않습니다. 명시적인 순서가 필요한 경우에는 'ORDER BY'를 제공해야합니다. –

+4

데이터가 특정 순서로 저장되지 않습니다. 'ORDER BY'를 사용하여 원하는 순서를 지정해야합니다 – Taryn

+0

SQL Server, MySQL, Oracle, DB2, Access ...에 대해 이야기하고 있습니까? –

답변

3

SELECT DISTINCT을 사용하는 경우 선택되지 않은 컬럼으로 주문할 수 없습니다. 원하는 작업을 수행하는 가장 쉬운 방법은 다음과 같습니다.

SELECT name FROM @table GROUP BY name ORDER BY min(id); 
관련 문제