MySQL에서 여러 테이블의 결과를 하나로 병합하려면 JOIN을 사용하면 됩니다. JOIN은 공통 조건을 기준으로 두 개 이상의 테이블을 연결해 하나의 결과 집합으로 만들어 주는 가장 기본적이고 강력한 방법입니다.
기본 문법
테이블에 별칭(alias)을 지정하고, ON 절에 병합 조건을 작성하는 것이 핵심입니다.
SELECT
aliasName1.yourColumnName1,
aliasName1.yourColumnName2,
...
aliasName2.yourColumnName1
FROM yourTableName1 aliasName1
JOIN yourTableName2 aliasName2
ON yourCondition;예제 테이블 생성하기
먼저 첫 번째 예제 테이블인 demo8을 생성합니다.
mysql> CREATE TABLE demo8 (
-> id INT,
-> name VARCHAR(20)
-> );
Query OK, 0 rows affected (1.77 sec)INSERT 명령어로 샘플 데이터를 입력합니다.
mysql> INSERT INTO demo8 VALUES(100,'John'); Query OK, 1 row affected (0.09 sec) mysql> INSERT INTO demo8 VALUES(101,'Mike'); Query OK, 1 row affected (0.16 sec) mysql> INSERT INTO demo8 VALUES(102,'Bob'); Query OK, 1 row affected (0.15 sec)
SELECT 문으로 저장된 데이터를 확인합니다.
mysql> SELECT * FROM demo8;
실행 결과는 다음과 같습니다.
+------+------+ | id | name | +------+------+ | 100 | John | | 101 | Mike | | 102 | Bob | +------+------+ 3 rows in set (0.00 sec)
두 번째 테이블 생성하기
이제 나이 정보를 담고 있는 demo9 테이블을 생성합니다.
mysql> CREATE TABLE demo9 (
-> id INT,
-> age INT
-> );
Query OK, 0 rows affected (1.90 sec)마찬가지로 샘플 데이터를 삽입합니다.
mysql> INSERT INTO demo9 VALUES(100,27); Query OK, 1 row affected (0.09 sec) mysql> INSERT INTO demo9 VALUES(101,24); Query OK, 1 row affected (0.12 sec) mysql> INSERT INTO demo9 VALUES(102,28); Query OK, 1 row affected (0.29 sec)
SELECT 문으로 데이터를 확인합니다.
mysql> SELECT * FROM demo9;
실행 결과는 다음과 같습니다.
+------+------+ | id | age | +------+------+ | 100 | 27 | | 101 | 24 | | 102 | 28 | +------+------+ 3 rows in set (0.00 sec)
JOIN으로 결과 병합하기
두 테이블의 id 컬럼을 기준으로 JOIN하여 이름과 나이를 한 번에 조회할 수 있습니다.
mysql> SELECT tbl1.id, tbl1.name, tbl2.age
-> FROM demo8 tbl1
-> JOIN demo9 tbl2
-> ON tbl1.id = tbl2.id;실행 결과는 다음과 같습니다.
+------+------+------+ | id | name | age | +------+------+------+ | 100 | John | 27 | | 101 | Mike | 24 | | 102 | Bob | 28 | +------+------+------+ 3 rows in set (0.00 sec)
정리
이처럼 MySQL에서는 JOIN과 ON 조건만으로 서로 다른 테이블의 데이터를 손쉽게 병합할 수 있습니다. 위 예제에서는 INNER JOIN을 사용했으며, 상황에 따라 LEFT JOIN, RIGHT JOIN 등을 활용하면 한쪽 테이블에만 존재하는 데이터도 함께 조회할 수 있습니다.