반응형
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
키워드가 없으면 기본값인 쉼표로 구분처리 됩니다.
조회 결과
반응형
'Databases > Mysql' 카테고리의 다른 글
Mysql - 여러개의 컬럼을 유니크하게 관리하기(다중 컬럼, UNIQUE) (0) | 2020.06.08 |
---|---|
Mysql - 특정구분자 문자열을 split하고 검색하기 (0) | 2020.05.15 |
Mysql - trigger를 활용하여 특정 문자열을 구분하여 INSERT하기(trigger 생성하기) (0) | 2020.02.14 |
Mysql - Group by한 데이터들의 마지막(최신) 값만 가져오기 (4) | 2020.02.10 |
Mysql - date_format 사용하기 포맷형태(%Y-%m-%d) (0) | 2020.02.06 |