집 >데이터 베이스 >MySQL 튜토리얼 >MySQL에서 여러 하위 행을 단일 상위 행으로 결합하는 방법은 무엇입니까?
MySQL에서 여러 하위 행을 하나의 상위 행으로 결합
중첩된 데이터가 있는 구조화된 테이블을 처리할 때 병합하는 것이 유용할 수 있습니다. 여러 하위 행을 단일 상위 행으로 통합하여 데이터에 대한 보다 집계된 보기를 제공합니다. 이것이 필요한 일반적인 시나리오 중 하나는 주어진 예에 제시된 것과 같은 주문 관리 시스템으로 작업할 때입니다.
Ordered_Item 및 Ordered_Options라는 두 테이블을 고려해보세요. Ordered_Item 테이블은 주문한 항목을 나타내고 Ordered_Options 테이블에는 각 주문 항목과 관련된 추가 세부 정보 또는 옵션이 포함됩니다. 목표는 Ordered_Item 테이블의 Item_Name 열과 Ordered_Options 테이블의 해당 옵션 값을 결합하고 특정 순서로 그룹화되고 쉼표로 구분된 쿼리를 출력하는 것입니다.
한 가지 효과적인 솔루션은 MySQL의 GROUP_CONCAT를 활용하는 것입니다. 지정된 열을 기준으로 그룹화된 여러 행의 값을 연결하는 함수입니다. 아래 쿼리는 원하는 결과를 달성합니다.
SELECT ordered_item.id AS `Id`, ordered_item.Item_Name AS `ItemName`, GROUP_CONCAT(Ordered_Options.Value) AS `Options` FROM ordered_item JOIN ordered_options ON ordered_item.id = ordered_options.ordered_item_id GROUP BY ordered_item.id
이 쿼리는 다음과 같은 출력을 생성합니다.
Id ItemName Options 1 Pizza Pepperoni,Extra Cheese 2 Stromboli Extra Cheese
GROUP_CONCAT 함수는 옵션 값이 단일 문자열로 연결되고 Option_Number 열을 기준으로 옵션의 순서입니다. 이 방법은 매우 효율적이며 정적 솔루션이나 쿼리의 추가 복잡성 없이 많은 옵션을 처리할 수 있습니다.
연결된 결과가 기본 최대 길이인 1024자를 초과하는 경우를 처리하기 위해 MySQL은 다음을 제공합니다. group_concat_max_len 변수. 아래와 같이 이 변수를 더 높은 값으로 설정하면 더 큰 연결 문자열을 수용할 수 있습니다.
SET SESSION group_concat_max_len = 8192;
위 내용은 MySQL에서 여러 하위 행을 단일 상위 행으로 결합하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!