보시다시피 사용이 매우 쉽습니다. 하지만 병합을 수행할 때 알아야 할 몇 가지 규칙이 있습니다.
1.UNION은 UNION 키워드로 구분된 2개 이상의 SELECT 문으로 구성되어야 합니다(따라서 4개의 SELECT 문이 결합되면 3개의 UNION 키워드가 사용됩니다).
2. UNION의 각 쿼리에는 동일한 열, 표현식 또는 집계 함수가 포함되어야 합니다(열이 동일한 순서로 나열될 필요는 없음).
3. 열 데이터 유형은 호환되어야 합니다. 유형은 정확히 동일할 필요는 없지만 DBMS가 암시적으로 변환할 수 있는 유형이어야 합니다(예: 다른 숫자 유형 또는 다른 날짜 유형). 이러한 기본 규칙이나 제한 사항을 따르면 모든 데이터 검색 작업에 및를 사용할 수 있습니다.
중복 행 포함 또는 취소
별도로 실행할 때 첫 번째 SELECT 문은 4개의 행을 반환하고 두 번째 SELECT 문은 5개의 행을 반환합니다. 그러나 두 개의 SELECT 문을 UNION과 결합한 후에는 9행 대신 8행만 반환되었습니다.
UNION은 쿼리 결과 집합에서 중복 행을 자동으로 제거합니다. 즉, 단일 SELECT 문에서 여러 WHERE 절 조건처럼 동작합니다. 공급업체 1002도 가격이 5보다 낮은 항목을 생산하므로 두 SELECT 문 모두 해당 행을 반환합니다. UNION을 사용하면 중복 행이 자동으로 억제됩니다.
이것은 UNION의 기본 동작이지만 원하는 경우 변경할 수 있습니다. 실제로 일치하는 모든 행을 반환하려면 UNION 대신 UNION ALL을 사용하세요.
다음 예를 참조하세요.
입력:
select vend_id,prod_id,prod_price from products where prod_price <= 5 union all select vend_id,prod_id,prod_price from products where vend_id in (1001,1002);
출력:
분석: UNION ALL 사용, MySQL은 중복된 행을 취소하지 않습니다. 따라서 여기 예제에서는 9개의 행을 반환하며 그 중 하나는 두 번 나타납니다.
UNION 및 WHERE UNION은 거의 항상 여러 WHERE 조건과 동일한 작업을 수행합니다. UNION ALL은 WHERE 절이 할 수 없는 작업을 완료하는 UNION의 한 형태입니다. 각 조건에 대해 일치하는 모든
행(중복 행 포함)이 표시되어야 하는 경우 WHERE 대신 UNION ALL을 사용해야 합니다.
결합된 쿼리 결과 정렬
SELECT 문의 출력은 ORDER BY 절을 사용하여 정렬됩니다. UNION으로 쿼리를 결합하는 경우 ORDER BY 절은 하나만 사용할 수 있으며 마지막 SELECT 문 뒤에 나타나야 합니다. 결과 집합의 한 부분은 한 가지 방식으로 정렬되고 다른 부분은 다른 방식으로 정렬될 수 있는 상황이 없으므로 여러 ORDER BY 절은 허용되지 않습니다.
다음 예에서는 이전 UNION에서 반환된 결과를 정렬합니다.
입력:
select vend_id,prod_id,prod_price from products where prod_price <= 5 union select vend_id,prod_id,prod_price from products where vend_id in (1001,1002) order by vend_id,prod_price;
출력:
분석: 이 UNION은 마지막 SELECT 문 다음에 ORDER BY 절을 사용합니다. ORDER BY 절이 마지막 SELECT 문의 필수 부분인 것처럼 보일지라도 MySQL은 실제로 이를 사용하여 모든 SELECT 문의 반환된 모든 결과를 정렬합니다.
서로 다른 테이블을 결합합니다. 표현식을 더 간단하게 만들기 위해 이 장의 예에 있는 결합된 쿼리는 모두 동일한 테이블을 사용합니다. 그러나 UNION을 사용한 결합된 쿼리는 다른 테이블에 적용될 수 있습니다.
위 내용은 MySQL 결합 쿼리의 UNION 데이터 정렬 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!