Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 UNION과 ORDER BY 절을 함께 사용하는 방법

UNION은 MySQL에서 여러 테이블의 결과를 하나의 결과 집합으로 합칠 때 사용하는 연산자입니다. 여러 테이블에서 행을 차례로 선택하거나, 하나의 테이블에서 여러 개의 행 집합을 하나의 결과로 가져오고 싶을 때 UNION을 활용할 수 있습니다. 또한 ORDER BY 절과 함께 사용하면 병합된 결과를 원하는 기준으로 정렬할 수 있습니다.

이번 글에서는 실제 예제를 통해 UNION과 ORDER BY를 함께 사용하는 방법을 단계별로 살펴보겠습니다.

1. 첫 번째 테이블 생성하기

먼저 예제에 사용할 첫 번째 테이블을 생성합니다.

mysql> create table UnionDemo1
-> (
-> id int
-> );
Query OK, 0 rows affected (0.59 sec)

2. 첫 번째 테이블에 데이터 삽입하기

생성한 테이블에 레코드를 삽입합니다.

mysql> insert into UnionDemo1 values(1),(4),(10);
Query OK, 3 rows affected (0.21 sec)
Records: 3 Duplicates: 0 Warnings: 0

삽입된 전체 레코드를 확인해 보겠습니다.

mysql> select *from UnionDemo1;

다음은 모든 레코드를 출력한 결과입니다.

+------+
| id |
+------+
| 1 |
| 4 |
| 10 |
+------+
3 rows in set (0.00 sec)

3. 두 번째 테이블 생성 및 데이터 삽입하기

이어서 두 번째 테이블을 생성합니다.

mysql> create table UnionDemo2
-> (
-> id int
-> );
Query OK, 0 rows affected (0.54 sec)

두 번째 테이블에도 레코드를 삽입합니다.

mysql> insert into UnionDemo2 values(2),(3),(5),(6),(7),(8),(9);
Query OK, 7 rows affected (0.21 sec)
Records: 7 Duplicates: 0 Warnings: 0

전체 레코드를 조회하면 다음과 같습니다.

mysql> select *from UnionDemo2;

출력 결과는 아래와 같습니다.

+------+
| id |
+------+
| 2 |
| 3 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
+------+
7 rows in set (0.00 sec)

4. UNION과 ORDER BY 함께 사용하기

이제 두 테이블의 id 값을 UNION으로 병합하고, ORDER BY 절을 사용하여 내림차순으로 정렬해 보겠습니다.

mysql> select id from UnionDemo1
-> union
-> select id from UnionDemo2
-> order by id desc;

실행 결과는 다음과 같습니다.

+------+
| id |
+------+
| 10 |
| 9 |
| 8 |
| 7 |
| 6 |
| 5 |
| 4 |
| 3 |
| 2 |
| 1 |
+------+
10 rows in set (0.05 sec)

위 결과에서 확인할 수 있듯이, 두 테이블의 데이터가 하나의 결과 집합으로 병합된 후 id를 기준으로 내림차순 정렬되었습니다. 참고로 ORDER BY 절은 UNION 쿼리의 맨 마지막 SELECT 문 뒤에 위치시켜야 하며, 이렇게 하면 병합된 전체 결과에 대해 정렬이 적용됩니다.