Developer N
[MySQL] 여러 행을 한줄로 표현하는 방법(GROUP_CONCAT) 본문
728x90
GROUP_CONCAT()
n개의 row로 결과가 출력되는 쿼리를 한줄의 row로 표현하고 싶을 때가 있다.
이때 GROUP_CONCAT을 사용하면 된다.
쿼리 :
select userId
from userInfo
결과 :
userId |
aaa1 |
aaa1 |
ccc3 |
bbb2 |
위 쿼리의 결과가 표와 같다고 할 때
네개의 로우를 하나의 로우로 표현하고자 한다면 아래와 같이 쿼리를 작성하면 된다.
쿼리 :
select GROUP_CONCAT(userId SEPARATOR '|') as userId
from userInfo
결과 :
userId |
aaa1|aaa1|ccc3|bbb2 |
위의 표처럼 하나의 row에 구분자를 기준으로 모든 row가 붙어서 출력된다.
SEPARATOR을 사용하여 구분자를 원하는 대로 변경할 수도 있다.
중복 제거
만약 중복을 제거하고 싶은 경우아래 쿼리처럼 DISTINCT를 사용하면 된다.
쿼리 :
select GROUP_CONCAT(DISTINCT userId SEPARATOR '|') as userId
from userInfo
결과 :
userId |
aaa1|ccc3|bbb2 |
정렬
order by를 이용하여 정렬 기준도 정할 수 있다.
쿼리 :
select GROUP_CONCAT(DISTINCT userId ORDER BY userId SEPARATOR '|') as userId
from userInfo
결과 :
useId |
aaa1|bbb2|ccc3 |
728x90
'STUDY > DBMS' 카테고리의 다른 글
[프로그래머스 SQL 테스트] select 문제 풀이 정리 1 (0) | 2023.10.23 |
---|---|
[MyBatis] Could not set parameter at position 1 (values was ~) 에러 해결법 (0) | 2023.04.11 |
[MyBatis] MyBatis에서 insert 쿼리 등을 여러개 실행시키는 법 (0) | 2023.04.11 |
[MyBatis] 동적 쿼리 foreach문 문법 정리 (0) | 2023.04.10 |
[SQL/MySQL] LPAD, RPAD 함수 : 특정 길이만큼 문자열 채우기 (0) | 2023.02.23 |
Comments