MySQL에서는 CONCAT() 함수를 사용하여 서로 다른 테이블에 있는 열의 값을 하나로 연결할 수 있습니다. 이 글에서는 두 개의 테이블을 만들고, JOIN과 함께 CONCAT() 함수를 활용해 열을 결합하는 방법을 단계별로 살펴보겠습니다.
1. 첫 번째 테이블 생성
먼저 이름(FirstName)을 저장할 테이블을 생성합니다.
mysql> create table DemoTable1
-> (
-> FirstName varchar(20)
-> );
Query OK, 0 rows affected (0.90 sec)
INSERT 명령을 사용해 테이블에 레코드를 삽입합니다.
mysql> insert into DemoTable1 values('Chris');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable1 values('David');
Query OK, 1 row affected (0.12 sec)SELECT 문으로 테이블의 모든 레코드를 확인해 보겠습니다.
mysql> select *from DemoTable1;
실행 결과는 다음과 같습니다.
+-----------+
| FirstName |
+-----------+
| Chris |
| David |
+-----------+
2 rows in set (0.00 sec)
2. 두 번째 테이블 생성
이번에는 성(LastName)을 저장할 두 번째 테이블을 생성합니다.
mysql> create table DemoTable2
-> (
-> LastName varchar(20)
-> );
Query OK, 0 rows affected (0.95 sec)
마찬가지로 INSERT 명령으로 레코드를 삽입합니다.
mysql> insert into DemoTable2 values('Brown');
Query OK, 1 row affected (0.55 sec)
mysql> insert into DemoTable2 values('Miller');
Query OK, 1 row affected (0.18 sec)SELECT 문으로 데이터를 확인합니다.
mysql> select *from DemoTable2;
실행 결과는 다음과 같습니다.
+----------+
| LastName |
+----------+
| Brown |
| Miller |
+----------+
2 rows in set (0.00 sec)
3. 서로 다른 테이블의 열 연결하기
이제 CONCAT() 함수와 LEFT JOIN을 함께 사용하여 두 테이블의 열을 연결하는 쿼리를 작성해 보겠습니다. 별칭(alias)을 활용하면 각 테이블의 열을 명확하게 참조할 수 있습니다.
mysql> select concat(tbl1.FirstName,' ',tbl2.LastName) from DemoTable tbl1
-> left join DemoTable2 tbl2
-> on tbl2.LastName='Brown' or tbl2.LastName='Miller';
위 쿼리를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.
+------------------------------------------+
| concat(tbl1.FirstName,' ',tbl2.LastName) |
+------------------------------------------+
| Chris Brown |
| David Brown |
| Chris Miller |
| David Miller |
+------------------------------------------+
4 rows in set (0.04 sec)
결과 해석
출력 결과를 보면 첫 번째 테이블의 각 이름이 두 번째 테이블의 성과 조합되어 'Chris Brown', 'David Brown', 'Chris Miller', 'David Miller'처럼 공백으로 구분된 전체 이름 형태로 연결된 것을 확인할 수 있습니다.
ON 조건에서 OR 연산자를 사용했기 때문에 두 번째 테이블의 모든 행(Brown, Miller)이 첫 번째 테이블의 각 행과 매칭되어 총 4개의 조합이 생성됩니다. 만약 특정 조합만 원한다면 ON 조건을 더 구체적으로 작성하거나, CROSS JOIN을 명시적으로 사용하는 방법도 고려할 수 있습니다.
이처럼 MySQL의 CONCAT() 함수는 문자열뿐 아니라 여러 테이블의 열 값도 손쉽게 하나의 문자열로 합칠 수 있는 유용한 도구입니다. 실무에서는 이름과 성을 결합하거나, 주소 정보를 하나의 문자열로 만들 때 자주 활용됩니다.