> 데이터 베이스 > MySQL 튜토리얼 > MySQL의 GROUP_CONCAT은 어떻게 조건부 연결을 달성할 수 있습니까?

MySQL의 GROUP_CONCAT은 어떻게 조건부 연결을 달성할 수 있습니까?

Mary-Kate Olsen
풀어 주다: 2024-12-20 09:14:09
원래의
906명이 탐색했습니다.

How Can MySQL's GROUP_CONCAT Achieve Conditional Concatenation?

MySQL에서 조건부 연결을 위해 GROUP_CONCAT 활용

데이터베이스 조작을 위해서는 데이터를 다양한 요구 사항에 맞게 다양한 형식으로 변환해야 합니다. 일반적인 작업 중 하나는 특정 식별자와 관련된 여러 값을 연결하는 것입니다. MySQL에서 GROUP_CONCAT 함수는 이러한 연결을 유연한 방식으로 수행하기 위한 강력한 도구를 제공합니다.

다음 데이터가 포함된 MySQL 테이블을 생각해 보세요.

id Name Value
1 A 4
1 A 5
1 B 8
2 C 9

우리의 목표는 이 데이터를 변환하는 것입니다. 특정 형식으로:

id Column
1 A:4,5,B:8
2 C:9

이 형식을 얻으려면 GROUP_CONCAT을 활용하여 여러 항목을 연결할 수 있습니다. 각 고유 식별자와 관련된 값입니다. 솔루션에 대한 자세한 분석은 다음과 같습니다.

select id, group_concat(`Name` separator ',') as `ColumnName`
from
(
  select id,
  concat(`Name`, ':', group_concat(`Value` separator ',')) as Name
   from mytbl group by id, Name
) tbl
group by id;
로그인 후 복사

설명:

  • 쿼리는 id 열을 선택하고 GROUP_CONCAT을 사용하여 모든 고유 이름을 연결하는 것으로 시작됩니다. 각 ID와 연관된 값을 ColumnName이라는 새 열에 추가합니다.
  • 여러 개를 달성하려면 연결에서는 중첩 쿼리를 활용합니다. 내부 쿼리는 id와 Name을 기준으로 행을 그룹화한 다음 Value 열을 id와 Name의 각 고유 조합에 대한 단일 문자열로 연결합니다. 결과는 각 행의 연결된 값을 포함하는 Name이라는 열입니다.
  • 그런 다음 외부 쿼리는 내부 쿼리의 결과를 id별로 그룹화하고 GROUP_CONCAT를 Name 열에 적용하여 원하는 형식을 얻습니다.

대안으로 이름별로 그룹화하지 않고 모든 값을 연결하려는 경우 쿼리를 다음과 같이 수정할 수 있습니다. 다음:

select id,group_concat(concat(`name`,':',`value`) separator ',')
as Result from mytbl group by id
로그인 후 복사

위 내용은 MySQL의 GROUP_CONCAT은 어떻게 조건부 연결을 달성할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿