English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
이 튜토리얼에서는 두 개나 그 이상의 SQL 쿼리의 결과를 결합하는 방법을 배웁니다.
UNION 연산자는 두 개나 그 이상의 SELECT 쿼리의 결과를 하나의 결과 집합에 결합하는 데 사용됩니다. UNION 연산자는 두 테이블의 열을 결합하는 조인과는 다릅니다. UNION 연산자는 두 원본 테이블의 모든 행을 하나의 결과 테이블에 배치하여 새 테이블을 생성합니다.
아래는 UNION으로 두 SELECT 쿼리의 결과 집합을 결합하는 기본 규칙입니다:
모든 쿼리에서 열의 수와 순서는 같아야 합니다。
대응하는 열의 데이터 타입은 호환되어야 합니다。
이 조건을 만족하면 이 테이블들은 결합 호환됩니다(union-compatible):
UNION의 기본 문법:
SELECT column_list FROM table1_name UNION SELECT column_list FROM table2_name;
합병 연산을 더 잘 이해하기 위해, employees와 customers 테이블에 first_name과 last_name와 같은 가정된 필드가 존재한다고 가정해 보겠습니다. 주의하시오, 이 필드는 실제로 우리의 데모 데이터베이스 테이블에 존재하지 않습니다.
+----+------------+-----------+--------+ | id | first_name | last_name | salary | +----+------------+-----------+--------+ | 1 | Ethan | Hunt | 5000 | | 2 | Tony | Montana | 6500 | | 3 | Sarah | Connor | 8000 | | 4 | Rick | Deckard | 7200 | | 5 | Martin | Blank | 5600 | +----+------------+-----------+--------+ | +----+------------+-----------+----------+ | id | first_name | last_name | city | +----+------------+-----------+----------+ | 1 | Maria | Anders | Berlin | | 2 | Fran | Wilson | Madrid | | 3 | Dominique | Perrier | Paris | | 4 | Martin | Blank | Turin | | 5 | Thomas | Hardy | Portland | +----+------------+-----------+----------+ | |
테이블: employees | 테이블: customers |
두 쿼리 결과를 병합하기 위해 합병 연산을 실행하겠습니다.
다음 문장은 모든 고객과 직원의 이름과 성을 반환합니다:
SELECT first_name, last_name FROM employees UNION SELECT first_name, last_name FROM customers;
위 명령어 실행 후, 결과 집합은 다음과 같이 보일 것입니다:
+---------------+--------------+ | first_name | last_name | +---------------+--------------+ | Ethan | Hunt | | Tony | Montana | | Sarah | Connor | | Rick | Deckard | | Martin | Blank | | Maria | Anders | | Fran | Wilson | | Dominique | Perrier | | Thomas | Hardy | +---------------+--------------+
기본적으로 UNION 연산자는 결합된 결과 집합에서 중복된 행을 제거합니다. 이로 인해 위의 쿼리는 다음과 같이 반환됩니다:9행,如果您注意到名称“Martin Blank”同时出现在employees和customers表中。
그러나, 중복된 행을 유지하려면 ALL 키워드를 사용할 수 있습니다. 예를 들어:
SELECT first_name, last_name FROM employees UNION ALL SELECT first_name, last_name FROM customers;