2011-06-13 3 views
6

명령문별로 순서대로 모든 열에 한 번 방향을 제공 할 수 있습니까?주문에있는 모든 열에 대해 한 방향을 지정할 수 있습니까?

select * 
from my_table 
order by name desc, type desc 

은 한 번 "내림차순"를 사용하여 같은 일을 쓸 수 있습니다 즉?

어쩌면 이와 비슷한가요? (이 작동하지 않습니다)

select * 
from my_table 
order by (name, type) desc 

답변

4

아니요. SQL 표준은 허용하지 않습니다.

그런 말처럼, 그와 같은 구문을 지원하는 RDBMS가있을 수 있습니다. 나는 단지 어떤 것도 모르고있다.

7

당신은 그것에 대해 row_number을 사용할 수

select * 
from my_table 
order by 
     row_number() over (order by name, type) DESC 

을 마지막 DESC는 ROW_NUMBER의 순서를 반전합니다. 따라서 이름과 유형 모두에 대해 ASC를 DESC로 바꿀 것입니다.

+0

이것은 영리합니다. –

+1

equivelent 동안, 나는 쿼리 최적화 프로그램이 까다 롭다 고 인식하고 한 번 정렬을 수행하는 대신 row_number()를 생성 한 다음 다시 한 번 다른 방향으로 출력을 정렬하는 대신 정렬을 수행하지 않을 것입니다. 나는 'order by row_number()에 의한 (A, B에 의한 순서) DESC' verus'order by A desc, B desc'에 추가 단계 인 "WINDOW SORT"가있는 explain 계획을 간략히 살펴 보았습니다. (EE 10.2.0.4.0 64 bit on linux) –

+4

ORDER BY라는 이름의 DESC를 입력하는 것이 더 쉬울 것 같아요. DESC ;-) – DCookie

관련 문제