오랜만에 쿼리짜다가 신기한 함수를 발견해서 글로 적어보기로 했다.
바로바로 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개나 발견하게 되어서 기쁜 날이 되었따!!
끝~~
[MySQL] SQL JOIN할 때 나는 1052 에러_ 메시지: Error(1052): Column "something" in "where" is ambiguous. (2) | 2021.09.16 |
---|---|
[h2 database] 기존 DB외 h2 DB 하나 더 생성하는 법 (0) | 2021.05.23 |
[mySQL] mySQL ERD생성하기, ERD자동 생성 (2) | 2021.05.17 |
[mySQL] 테이블에 저장된 값 export하기, 다른 테이블 값 쉽게 Insert하기 (1) | 2021.05.16 |
[mySQL 특정 날짜 조회] mySQL 날짜만 비교해서 해당 날짜에 해당하는 값 조회하기 (1) | 2021.05.02 |