>데이터 베이스 >MySQL 튜토리얼 >GROUP_CONCAT을 사용하여 SQLite에서 여러 행의 값을 단일 문자열로 효율적으로 연결하려면 어떻게 해야 합니까?

GROUP_CONCAT을 사용하여 SQLite에서 여러 행의 값을 단일 문자열로 효율적으로 연결하려면 어떻게 해야 합니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-04 18:57:011061검색

How can I efficiently concatenate values from multiple rows into a single string in SQLite using GROUP_CONCAT?

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을 올바르게 사용하려면 다음 단계를 수행하세요.

  1. 테이블 조인: JOIN 절을 사용하여 관련 테이블 사이의 관계를 설정하여 행이 연결을 위해 올바르게 그룹화되었는지 확인합니다.
  2. 집계 함수 사용: 집계 함수 적용( 예: GROUP_CONCAT)을 사용하여 GROUP BY 절로 식별된 중복 그룹의 값을 결합합니다.
  3. GROUP BY 절: FROM 절 뒤에 GROUP BY 절을 포함하여 어떤 열을 지정할지 지정합니다. 데이터를 그룹화합니다.

수정된 쿼리

다음 원칙을 따르는 수정된 쿼리는 다음과 같습니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.