- (맵 서버 나 응용 프로그램 사용하고 http://mapserver.org/ 문 BY 순서는 내부 쿼리에 그래서, 랩이 문을 SQL 있음을). 예 :
SELECT * FROM (
SELECT ID, GEOM, Name
FROM t
ORDER BY Name
) as tbl
응용 프로그램에는 다양한 데이터베이스 드라이버가 있습니다. 주로 MS SQL Server 드라이버와 SQL Server 2008을 사용합니다. 하위 쿼리에서 ORDER BY가 발견되면 오류가 발생합니다.
MS Docs (SQL Server 2000 용이지만 여전히 적용되는 것처럼 보입니다) :
뷰, 인라인 함수, 파생 테이블 또는 서브 쿼리에서 ORDER BY 절을 사용하는 경우 순서가 지정된 출력을 보장하지 않습니다. 대신 ORDER BY 절은 Top 연산자에 의해 생성 된 결과 집합이 일관된 구성을 갖도록 보장하는 데만 사용됩니다. ORDER BY 절은 가장 바깥 쪽 SELECT 문에 지정된 경우에만 정렬 된 결과 세트를 보장합니다.
그러나 Postgres (9)에서 실행되는 동일한 유형의 쿼리와 Oracle은 하위 쿼리에 정의 된 순서대로 결과를 반환합니다. Postgres에서 쿼리 계획은 결과가 정렬되어 있고 Postgres 릴리스 노트에는 하위 쿼리 순서가 사용됨을 나타내는 항목이 포함되어 있습니다.
하위 쿼리 ORDER BY가 상위 쿼리와 일치 할 때 정렬 방지
http://en.wikipedia.org/wiki/Order_by 상태 :
일부 데이터베이스 시스템은 부속 선택이나보기 정의에서 ORDER BY 절의 스펙을 허용하지만 영향이 없습니다.
그러나 내 자신의 쿼리 계획 확인에서 :
- SQL Server 2008은 하위 쿼리에서 ORDER BY를 지원하지 않습니다
- Postgres 9는 하위 쿼리에서 ORDER BY를 지원합니다
- Oracle 10g는 하위 쿼리에서 ORDER BY를 지원합니다
내 질문에 Postgres와 Oracle이 하위 쿼리에서 정렬을 허용하지 않는다는 것을 공식적으로 확인하거나 거부 할 수있는 링크가 있습니까?
ORDER BY
하위 쿼리에서 중복을 식별 하고 불필요한 정렬을 수행하지 않습니다.