Databases/Mysql
Mysql - 다중행을 단일행으로 출력하기(group_concat)
Park.S.W
2020. 4. 21. 14:57
반응형
Mysql를 사용하다 보면 단일행에 대하여 참고하는 테이블의 데이터가 다중행일 경우가 있습니다.
이러한 경우 join문을 통해 데이터를 조회하게 되면 아래와 같이 다중행으로 출력됩니다.
1번 게시물 | 파일1 |
1번 게시물 | 파일2 |
1번 게시물 | 파일3 |
1번 게시물 | 파일4 |
1번 게시물 | 파일5 |
다중 데이터를 group_concat
메소드를 활용하여 조회 결과를 단일행으로 변경하는 방법을 알아보겠습니다.
1번 게시물 | 파일1, 파일2, 파일3, 파일4, 파일5 |
GROUP_CONCAT
select
group_concat(column)
from table;
단순하게 다중에서 단일로 묶고자 하는 컬럼을 group_concat
메소드 파라미터로 처리하면 됩니다.
아래는 사용 예제입니다.
group_concat 사용 예제
아래와 같은 2개의 테이블 있다고 가정하겠습니다.
board테이블은 게시판을 나타내는 테이블이며, file_info는 board테이블에 대한 파일 정보를 담고 있는 테이블입니다.
file_info테이블의 board_idx는 board테이블의 idx값을 참조합니다.
select
a.*,
group_concat(b.file_idx, b.file_name SEPARATOR '|')
from(
select
*
from board
limit 0, 10 #paging처리
) a
left outer join file_info b
on a.idx = b.board_idx
group by a.idx;
board 테이블에서 10개의 데이터를 먼저 가져오고, 해당 데이터를 a라고 별칭을 처리하고 file_info테이블의 참조컬럼을 join합니다.
group_concat
을 통해 각각 파일에 대한 idx값인 file_idx컬럼과 file_name컬럼을 붙여서 출력합니다.
SEPARATOR
키워드는 이름 그대로 구분자를 지정할 수 있습니다. 부득이한 상황으로 쉼표 구분자를 사용할 수 없다면 해당 키워드를 추가하여 구분값을 변경해주세요. SEPARATOR
키워드가 없으면 기본값인 쉼표로 구분처리 됩니다.
조회 결과
반응형