반응형
쿼리로 통계 또는 지표 데이터를 만들다 보면 그룹화된 데이터를 하나의 데이터로 표출해야 하는 경우가 생기게 된다.
ex) 서비스를 이용하고 있는 사용자들의 이름 또는 아이디 정보를 쉼표로 구분해서 하나의 문자열로 합쳐서 보고 싶다!.
그런 경우에는 mysql에서는 group_concat 함수를 실행시키면 된다.
group_concat 함수의 자세한 스펙은 다음과 같다.
https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html#function_group-concat
함수의 구조는 다음과 같다.
GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | expr}
[ASC | DESC] [,col_name ...]]
[SEPARATOR str_val])
예시로 account 테이블에 다음과 같은 데이터가 있다고 생각해보자.
account_id | name | created_at | updated_at | |
1 | 왕밤빵1 | test1@test.com | 2020-07-04 17:14:24 | 2020-07-04 17:14:24 |
2 | 왕밤빵2 | test2@test.com | 2020-07-04 17:14:24 | 2020-07-04 17:14:24 |
3 | 왕밤빵3 | test3@test.com | 2020-07-04 17:14:24 | 2020-07-04 17:14:24 |
4 | 왕밤빵4 | test4@test.com | 2020-07-04 17:14:24 | 2020-07-04 17:14:24 |
group_concat 함수를 이용해서 account 테이블에 있는 사용자들의 이름을 하나의 문자열로 표현해보자.
select GROUP_CONCAT(name) from account;
다음과 같은 결과를 얻을 수 있을 것이다.
결과:
왕밤빵1,왕밤빵2,왕밤빵3,왕밤빵4
쉼표로 구분하지 말고 다른 구분자를 사용하고 싶은 경우 다음과 같이 작성하면 된다.
select group_concat(name separator '_') from account;
다음과 같이 구분자가 변경된 결과를 얻을 수 있을 것이다.
왕밤빵1_왕밤빵2_왕밤빵3_왕밤빵4
반응형
'Programming > Database' 카테고리의 다른 글
[DB,Transaction] Transaction 과 Lock (0) | 2021.12.26 |
---|---|
[Redis] 여러 키 한번에 삭제하기 (0) | 2020.10.28 |
[Mysql] 버전 문자열 비교 및 숫자 변환 (2) | 2019.06.05 |
DBMS의 장점 (0) | 2016.06.20 |
데이터베이스 사용자 (0) | 2016.06.20 |