[MySQL] 여러 기록의 열 내용을 결합하여 획득

전제 조건
SQL 취합을 사용하여 여러 행의 동일한 열 컨텐트를 얻으려는 경우
예를 들어 블로그 앱 기사 일람에 댓글을 단 모든 사람의 이름을 올리려는 식이다.
"A씨~"를 기억하는 부분 등을 참고하세요.

참조 정보: 요약 열의 CONCAT 함수
MySQL로 열 내용을 정리할 때 CONCAT 함수를 사용할 수 있습니다
-- 準備
CREATE TABLE User(id integer, last_name varchar(100), first_name varchar(100));
INSERT INTO User(id, last_name, first_name) VALUES(1, "田中","太郎"),(2, "鈴木","次郎"),(3, "遠藤","三郎");
-- 名前をくっつける
SELECT id, CONCAT(last_name, first_name) FROM User;
-- => 1 田中太郎 など
참고로 숫자형과 문자열형도 결합할 수 있다
SELECT CONCAT(id, first_name) FROM User;
-- 1太郎
제목: 전체 모음 열의 GRUPCONCAT 함수
이번 경우 여러 줄에 걸쳐 있는 열을 하나로 정리하고 싶어서 CONCAT 함수와 비슷한 GRUPCONCAT 함수를 사용합니다.
GROUP_CONCAT 함수는 GRUPBY와 함께 사용되는 합계 함수로, 합계 열에서 합계 방법을 지정합니다.
통계 함수 이미지

GROUP_CONCAT 함수의 경우 "문자열로 결합"
-- 準備
CREATE TABLE Student(id integer, class varchar(10), name varchar(100));
INSERT INTO Student(id, class, name) VALUES(1, "A", "田中"),(2, "A", "鈴木"),(3, "A", "遠藤");

-- 名前をくっつける
SELECT class, GROUP_CONCAT(name) FROM Student GROUP BY class;
-- class	GROUP_CONCAT(name)
-- A	田中,鈴木,遠藤
쉼표의 구분자는 지정할 수 있다
SELECT class, GROUP_CONCAT(name SEPARATOR '-') FROM Student GROUP BY class;
-- A	田中-鈴木-遠藤
정렬 순서를 지정할 수도 있습니다.
SELECT class, GROUP_CONCAT(name ORDER BY id DESC) FROM Student GROUP BY class;
-- A	遠藤,鈴木,田中
조건식 등도 포함할 수 있다
-- 名前をくっつける
SELECT class, GROUP_CONCAT(CASE WHEN NAME = "鈴木" THEN "◯" ELSE "×" END) FROM Student GROUP BY class;
-- A	×,◯,×
전제적인 장소 외에도 다양한 물건을 사용할 수 있으니 꼭 활용하세요.
참고 자료
12.19.1 GRUPBY 함수
MySQL 문자열 조합 CONCATGROUP_CONCAT 및 GRUPBY를 통해 여러 데이터 취합

좋은 웹페이지 즐겨찾기