> 데이터 베이스 > MySQL 튜토리얼 > MySQL에서 여러 행을 쉼표로 구분된 단일 행으로 결합하는 방법은 무엇입니까?

MySQL에서 여러 행을 쉼표로 구분된 단일 행으로 결합하는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2024-11-08 12:21:02
원래의
803명이 탐색했습니다.

How to Combine Multiple Rows into a Single Comma-Separated Row in MySQL?

MySQL: 여러 행을 단일 쉼표로 구분된 행으로 변환

MySQL 데이터베이스 내에서 다음을 수행하려는 상황이 발생할 수 있습니다. 여러 행을 단일 행으로 압축하고 특정 열은 쉼표로 구분된 값으로 표시됩니다. 이는 다음 예제 시나리오에서 설명한 대로 GROUP_CONCAT 함수를 활용하여 달성할 수 있습니다.

예시 시나리오:

DISH와 DISH_HAS_DISHES라는 두 테이블을 고려해 보세요. 여기서 DISH는 사용 가능한 모든 요리, DISH_HAS_DISHES는 DISH 간의 일대다 관계를 정의합니다. DISH 테이블의 구조는 다음과 같습니다.

DISH:
dish_id   dish_name
1         dish_1
2         dish_2
3         dish_3
4         dish_4
로그인 후 복사

DISH_HAS_DISHES 테이블은 다음과 같습니다.

DISH_HAS_DISHES:
meal_id   dish_id
1         2
1         3
1         4
로그인 후 복사

목표:

우리의 목표 데이터를 각 식사에 해당하는 행이 있고 요리 ID와 이름이 쉼표로 구분된 값으로 나열되는 형식으로 데이터를 변환하는 것입니다. 원하는 출력은 다음과 같습니다.

meal_id     dish_ids     dish_names
1           2,3,4        dish_2, dish_3, dish_4
로그인 후 복사

해결책:

이를 달성하기 위해 몇 가지 간단한 JOIN 작업과 함께 GROUP_CONCAT 함수를 사용합니다.

SELECT m.meal_id, 
        GROUP_CONCAT(dish_id) AS dish_ids, 
        GROUP_CONCAT(dish_name) AS dish_names
FROM DISH_HAS_DISHES m JOIN DISH d ON (m.dish_id = d.dish_id)
GROUP BY meal_id
로그인 후 복사

이 쿼리에서:

  • dish_HAS_DISHES 테이블(m)을 DISH 테이블(d)의 DISH_ID 열에 조인하는 것부터 시작합니다.
  • SELECT 문 내에서 , GROUP_CONCAT을 사용하여 접시_ID 및 접시 이름 열의 여러 값을 병합합니다.
  • 마지막으로 결과를 식사 ID별로 그룹화하여 각 식사에 대한 단일 행을 얻습니다.

실행하여 이 쿼리를 사용하면 각 행이 식사, 요리 ID 및 해당 요리 이름을 나타내는 원하는 출력을 얻을 수 있으며 모두 쉼표로 구분된 값으로 표시됩니다. 이 기술은 표 형식 데이터로 작업하고 여러 행에 걸쳐 정보를 통합할 때 특히 유용합니다.

위 내용은 MySQL에서 여러 행을 쉼표로 구분된 단일 행으로 결합하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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