집 >데이터 베이스 >MySQL 튜토리얼 >GROUP_CONCAT을 사용하여 SQLite에서 여러 행의 값을 단일 문자열로 효율적으로 연결하려면 어떻게 해야 합니까?
SQLite의 GROUP_CONCAT 이해
관계형 데이터베이스 스키마를 처리할 때 테이블의 여러 행에 있는 값을 단일 행으로 연결해야 하는 경우가 많습니다. 끈. SQLite에서 GROUP_CONCAT 함수는 이 작업에 대한 강력한 솔루션을 제공합니다.
데이터 및 목표
초록과 관련된 저자를 나타내는 다음 샘플 데이터를 고려하세요.
1 A 1 B 1 C 1 D 2 E 2 F 3 G 3 H 3 I 3 J 3 K
이 데이터를 각 고유 추상 ID(_id)가 다음과 같이 쉼표로 구분된 해당 저자 이름 목록과 연결되는 형식으로 변환하려고 합니다.
1 A,B,C,D 2 E,F
집계 함수와 함께 GROUP_CONCAT 사용
집계 함수 및 GROUP BY 절과 결합된 GROUP_CONCAT 함수를 사용하면 이 목표를 달성할 수 있습니다. 일반적인 접근 방식은 처음에 시도한 것처럼 하위 쿼리를 사용하여 중간 테이블을 만드는 것입니다. 그러나 중요한 단계를 놓쳤습니다.
올바른 접근 방식
GROUP_CONCAT을 올바르게 사용하려면 다음 단계를 수행하세요.
수정된 쿼리
다음 원칙을 따르는 수정된 쿼리는 다음과 같습니다.
SELECT ABSTRACTS_ITEM._id, GROUP_CONCAT(ABSTRACT_AUTHOR.NAME) AS GroupedName FROM ABSTRACTS_ITEM JOIN AUTHORS_ABSTRACT ON ABSTRACTS_ITEM._id = AUTHORS_ABSTRACT.ABSTRACTSITEM_ID JOIN ABSTRACT_AUTHOR ON ABSTRACT_AUTHOR._id = AUTHORS_ABSTRACT.ABSTRACTAUTHOR_ID GROUP BY ABSTRACTS_ITEM._id;
대체 쿼리
또는 처음 시도한 것처럼 하위 쿼리 접근 방식을 사용할 수 있지만 올바른 구문을 사용하면 됩니다.
SELECT ID, GROUP_CONCAT(NAME) FROM (select ABSTRACTS_ITEM._id AS ID, Name from ABSTRACTS_ITEM , ABSTRACT_AUTHOR , AUTHORS_ABSTRACT where ABSTRACTS_ITEM._id = AUTHORS_ABSTRACT.ABSTRACTSITEM_ID and ABSTRACT_AUTHOR._id = AUTHORS_ABSTRACT.ABSTRACTAUTHOR_ID) GROUP BY ID;
두 쿼리 모두 각 추상 ID에 대한 작성자 이름을 성공적으로 연결합니다. , 원하는 출력 형식을 제공합니다.
위 내용은 GROUP_CONCAT을 사용하여 SQLite에서 여러 행의 값을 단일 문자열로 효율적으로 연결하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!