- 쿼리 결합하기
기본적인 결합 쿼리를 사용하는 경우는 여러 테이블에 있는 비슷한 구조의 데이터를 하나의 쿼리로 가져오는 경우, 한 개의 테이블에서 여러 개의 쿼리를 수행하고, 하나의 결과로 가져오는 경우이다.
* UNION 사용 하기
각각 SELECT 문 사이에 UNION 키워드를 사용
SELECT cust_name, cust_contact, cust_email FROM Customers WHERE cust_state IN ('IL', 'IN', 'MI');
SELECT cust_name, cust_contact, cust_email FROM Customers WHERE cust_name = 'FUN4ALL';
첫 번째 SELECT는 IN 절에서 IL, IN, MI에 있는 행을 가져오고 두 번째는 고객명이 FUN4ALL인 모든 행을 가져오기
이 두 문장을 결합하면 다음과 같이 됨
SELECT cust_name, cust_contact, cust_email FROM Customers WHERE cust_state IN ('IL','IN','MI') UNION SELECT cust_name, cust_contact, cust_email FROM Customers WHERE cust_name = 'FUN4ALL';
* UNION 규칙
- UNION은 반드시 두 개 이상의 SELECT 구문으로 구성되어야 하며, 각 구문은 UNION이라는 키워드로 구분해야 함
- UNION에서 각 쿼리는 같은 컬럼이나 수식, 그룹 함수를 가져야 함
- 컬럼 데이터형은 호환될 수 있음. 정확히 같은 데이터형일 필요는 없지만 DBMS가 내부적으로 변환할 수 있어야 함
* 중복 행 포함하기와 제거하기
UNION은 쿼리 결과에서 자동으로 중복 행을 제거
만약 중복되는 행을 포함해서 모든 행을 가져오고 싶으면, UNION ALL을 사용하면 됨
* 결합 쿼리 결과 정렬하기
ORDER BY 절을 사용하여 SELECT 구문의 결과를 정렬할 수 있음
UNION으로 쿼리를 결합할 때에는 마지막 하나의 ORDER BY 절 사용 가능
SELECT cust_name, cust_contact, cust_email FROM Cstomers WHERE cust_state IN ('IL','IN','IM') UNION SELECT cust_name, cust_contact, cust_email FROM Customers WHERE cust_name = 'FUN4ALL' ORDER BY cust_name, cust_contact;
'Computer Science > SQL' 카테고리의 다른 글
SQL 정리-(5) (0) | 2018.11.28 |
---|---|
SQL 정리-(3) (0) | 2018.11.26 |
SQL 정리-(2) (0) | 2018.11.22 |
SQL 정리-(1) (0) | 2018.11.22 |