UNION ALL은 결과 집합의 순서를 보장합니까?
다음 스크립트의 결과 집합이 항상 이 O-R-D-E-R처럼 정렬되는지 확인할 수 있습니까?
SELECT 'O'
UNION ALL
SELECT 'R'
UNION ALL
SELECT 'D'
UNION ALL
SELECT 'E'
UNION ALL
SELECT 'R'
때때로 다른 순서로 증명될 수 있습니까?
순서는 , ▁to▁there를 . 사용해야 합니다.ORDER BY
예를 들어 다음을 추가하여 쉽게 수행할 수 있습니다.SortOrder
SELECT.SELECT를 합니다.그러면 레코드가 원하는 순서대로 유지됩니다.
SELECT 'O', 1 SortOrder
UNION ALL
SELECT 'R', 2
UNION ALL
SELECT 'D', 3
UNION ALL
SELECT 'E', 4
UNION ALL
SELECT 'R', 5
ORDER BY SortOrder
쿼리와 함께 주문을 구체적으로 제공하지 않는 한 주문을 보장할 수 없습니다.
아니, 그렇지 않아.SQL 테이블은 본질적으로 순서가 없습니다.은 야합다니해를 사용해야 .order by
원하는 순서대로 일을 처리할 수 있습니다.
문제는 한 번 사용해 볼 때 효과가 있느냐가 아닙니다.문제는 이 동작을 신뢰할 수 있느냐 하는 것입니다.그리고 당신은 할 수 없습니다.SQL Server는 다음에 대한 주문도 보장하지 않습니다.
select *
from (select t.*
from t
order by col1
) t
다음과 같이 표시됩니다.
ORDER BY가 뷰, 인라인 함수, 파생 테이블 또는 하위 쿼리 정의에 사용되는 경우, 절은 TOP 절에서 반환되는 행을 결정하는 데만 사용됩니다.ORDER BY 절은 쿼리 자체에 ORDER BY가 지정되지 않는 한 이러한 구성이 쿼리될 때 순서가 지정된 결과를 보장하지 않습니다.
SQL 언어의 기본 원칙은 테이블이 정렬되지 않는다는 것입니다.따라서 쿼리가 많은 데이터베이스에서 작동할 수 있지만 BlueFeet에서 제안한 버전을 사용하여 결과 순서를 지정해야 합니다.
다음 항목을 모두 제거해 보십시오.ALL
를 들어.s, , 그중 라도.아니면 그들 중 하나라도. 다른 도 "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "SELECT
쿼리는 테이블에 대한 실제 쿼리이며 개별적으로 최적화됩니다. 없이ORDER BY
각 쿼리 내에서 순서를 지정하는 것은 임의이며, 쿼리 자체가 어떤 순서로 처리되는지 보장할 수 없습니다.
ㅜㅜUNION ALL
ORDER BY
"그냥 바닥에 모든 구슬을 버려라."라고 말하는 것과 같습니다.아마도 여러분이 바닥에 모든 구슬을 던질 때마다, 그것들은 색깔별로 정리될 것입니다.그렇다고 해서 다음 번에 바닥에 버리면 똑같이 행동하는 것은 아닙니다.도 마찬가지입니다. SQL Server라고 하지 됩니다.ORDER BY
그러면 SQL Server는 사용자가 순서에 대해 신경 쓰지 않는다고 가정합니다.특정 주문이 항상 반환되는 것을 우연히 볼 수도 있지만, 다음에 선택한 임의 주문에 많은 영향을 미칠 수 있습니다.데이터 변경, 통계 변경, 다시 컴파일, 계획 플러시, 업그레이드, 서비스 팩, 핫픽스, 추적 플래그...메스꺼움
나는 이것을 명확하게 하기 위해 큰 글자로 쓸 것입니다:
ORDER BY가 없는 주문은 보증할 수 없습니다.
추가 정보:
또한 SQL 팀의 꽤 똑똑한 사람인 코너 커닝햄의 이 게시물을 읽어보시기 바랍니다.
아니요. SQL Server가 어떤 방식으로 레코드를 가져오든 상관없습니다.다음과 같이 1 기반 인덱스에 의해 설정된 결합된 결과에 대해 주문을 적용할 수 있습니다.
SELECT 1, 'O'
UNION ALL
SELECT 2, 'R'
UNION ALL
SELECT 3, 'D'
UNION ALL
SELECT 4, 'E'
UNION ALL
SELECT 5, 'R'
ORDER BY 1
언급URL : https://stackoverflow.com/questions/15766359/does-union-all-guarantee-the-order-of-the-result-set
'it-source' 카테고리의 다른 글
모든 Ajax 호출 후 Google 차트 다시 그리기 (0) | 2023.08.24 |
---|---|
오른쪽에서 CSS 배경 이미지 x 픽셀을 배치하시겠습니까? (0) | 2023.08.24 |
표에 제약 조건 표시 (0) | 2023.08.19 |
C에서 여러 개의 실행 취소를 수행하는 방법을 정리 (0) | 2023.08.19 |
CSS는 요소의 각 단어 뒤에 줄 바꿈을 강제로 수행할 수 있습니까? (0) | 2023.08.19 |