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

MySQL CONCAT() 함수 결과를 다른 테이블의 열과 결합하는 방법

MySQL에서 한 테이블의 열에 적용한 CONCAT() 함수의 출력 결과를, 다른 테이블의 열과 함께 조회할 수 있습니다. 이는 MySQL 조인(JOIN)을 활용하면 간단하게 구현할 수 있습니다.

기본 개념

일반적으로 CONCAT() 함수는 같은 테이블 내의 여러 열을 하나의 문자열로 합치는 데 사용됩니다. 하지만 WHERE 절에서 조인 조건을 지정하면, CONCAT() 함수로 가공한 한 테이블의 값과 다른 테이블의 값을 동시에 가져올 수 있습니다.

예제

예를 들어, 학생의 id, Name(이름), Last_name(성), Address(주소), Subjects(과목) 정보를 담고 있는 'Student' 테이블과, 학생별 id와 코멘트를 담고 있는 'Remarks' 테이블 두 개가 있다고 가정해 보겠습니다.

먼저 Remarks 테이블의 데이터는 다음과 같습니다.

mysql> Select * from remarks;
+------+-------------+
| ID   | Comment     |
+------+-------------+
| 1    | Good        |
| 2    | Excellent   |
| 15   | Average     |
| 20   | Good        |
| 21   | Outstanding |
+------+-------------+
5 rows in set (0.00 sec)

이제 아래 쿼리처럼 CONCAT() 함수와 다른 테이블의 열을 결합할 수 있습니다.

mysql> Select CONCAT(Name,' ' ,Last_Name ), Comment from student s, remarks r
-> Where s.id = r.id;
+------------------------------+-------------+
| CONCAT(Name,' ' ,Last_Name ) | Comment     |
+------------------------------+-------------+
| Gaurav Kumar                 | Good        |
| Aarav Sharma                 | Excellent   |
| Harshit Kumar                | Average     |
| Gaurav Rathore               | Good        |
| Yashraj Singh                | Outstanding |
+------------------------------+-------------+
5 rows in set (0.00 sec)

쿼리 동작 방식

위 쿼리에서 두 테이블은 양쪽에 공통으로 존재하는 학생의 'id'를 기준으로 조인됩니다. FROM 절에서 별칭(alias) sr을 지정하고, WHERE 절의 s.id = r.id 조건을 통해 두 테이블의 데이터를 연결합니다.

그 결과, Student 테이블의 Name과 Last_name을 CONCAT() 함수로 합친 전체 이름과, Remarks 테이블에서 가져온 해당 학생의 코멘트가 하나의 결과 집합으로 함께 출력됩니다.

참고: 명시적 JOIN 문법 사용하기

위 예제는 암시적(implicit) 조인 방식이며, 가독성을 높이기 위해 INNER JOIN 문법으로도 동일하게 작성할 수 있습니다.

SELECT CONCAT(s.Name, ' ', s.Last_Name) AS Full_Name, r.Comment
FROM student s
INNER JOIN remarks r ON s.id = r.id;

명시적 JOIN 문법을 사용하면 조인 조건이 코드에서 더 분명하게 드러나므로, 실무에서는 이 방식을 권장합니다.