티스토리 뷰

오랜만에 쿼리짜다가 신기한 함수를 발견해서 글로 적어보기로 했다.

바로바로 GROUP_CONCAT() 함수!!

 

GROUP_CONCAT()

살짝 알아본 바로는 SELECT 결과를 concat을 통해 한 문장으로 합쳐주는 것이다.

 

maria db에 잘 설명되어있어서 페이지 참고하시라고 첨부합니당...

https://mariadb.com/kb/en/group_concat/

group_concat 안에도 서브쿼리처럼 사용할 수 있으며, 정렬과 Limit 제한까지 가능한 모양이다.


SELECT name FROM test;

만약 이렇게 test라는 table에 값이 있다고 치자. 얘를 조회하면 컬럼의 길이가 3으로 나뉜다.

얘를 한 컬럼으로 합치고 싶을 때 group_concat()을 사용하면 된다.

 

SELECT GROUP_CONCAT(name) as nameList FROM test

이렇게하면 test테이블에 있는 결과를 ,를 구분자로 하여서 한 컬럼으로 출력하게 된다.


SELECT GROUP_CONCAT(name, '&') as nameList FROM test

이렇게 group으로 합칠 때 추가할 문자를 입력할 수 있는데, 쉼표가 나와서 썩 좋아보이진 않다...

그래도 유용하게 쓰일 듯 하다!


활용

 

난 얘를 INSERT INTO의 VALUE값에 넣어주려고 찾게 되었다.

value값에 서브쿼리를 넣는 것이 가능했는데, 서브쿼리의 결과가 1개가 아니라서 문제가 생겼었다.

-- 기존 생각
INSERT INTO test2(content) VALUES ((SELECT name FROM test WHERE name like "%o%"));
-- 변경
INSERT INTO test2(content) VALUES ((SELECT GROUP_CONCAT(name) FROM test WHERE name like "%o%"));

 

insert나 update의 value에 서브 쿼리가 들어간다는 것도 신기했는데,

저렇게 조회한 결과를 하나로 합쳐서 반환해주는 함수가 있다는 것도 참 신기했다.

 

모르는 기능을 2개나 발견하게 되어서 기쁜 날이 되었따!!

끝~~

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함