집 >데이터 베이스 >MySQL 튜토리얼 >SQL UNION ALL은 행 순서를 유지합니까?
SQL UNION ALL 쿼리의 순서 보존
SQL에서 UNION ALL은 여러 SELECT 문의 결과를 단일 결과로 결합하는 데 사용됩니다. 세트. UNION 연산자와 달리 UNION ALL은 중복 행을 제거하지 않습니다. 그러나 결과 데이터 세트의 순서는 보장됩니까?
짧은 대답은 '아니오'입니다. UNION ALL은 본질적으로 결과의 순서를 유지하지 않습니다. SELECT 문이 실행되고 행이 반환되는 순서는 구현에 따라 다르며 데이터베이스마다 다를 수 있으며 동일한 데이터베이스의 다른 버전 내에서도 다를 수 있습니다.
이를 설명하려면 다음 쿼리를 고려하세요.
SELECT 'O' UNION ALL SELECT 'R' UNION ALL SELECT 'D' UNION ALL SELECT 'E' UNION ALL SELECT 'R'
어떤 경우에는 결과 집합이 "O-R-D-E-R" 순서로 나타날 수 있지만 이것이 항상 순서대로 나타날 것이라는 보장은 없습니다. case.
결과의 특정 순서를 보장하려면 UNION ALL 연산자 뒤에 ORDER BY 절을 명시적으로 사용해야 합니다. 예를 들어 다음 쿼리는 결과를 알파벳 오름차순으로 정렬합니다.
SELECT 'O' UNION ALL SELECT 'R' UNION ALL SELECT 'D' UNION ALL SELECT 'E' UNION ALL SELECT 'R' ORDER BY 1
각 SELECT 문에 SortOrder 열을 추가하면 사용자 지정 기준에 따라 결과의 순서를 제어할 수도 있습니다.
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
따라서 결과의 구체적인 순서가 필요한 경우 ORDER BY를 사용하는 것이 필수적입니다. 그렇지 않으면 결과 집합의 순서가 예측할 수 없을 정도로 달라질 수 있습니다.
위 내용은 SQL UNION ALL은 행 순서를 유지합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!