집 >데이터 베이스 >MySQL 튜토리얼 >MySQL에서 행을 열로 동적으로 피벗하는 방법은 무엇입니까?
MySQL 동적 행 및 열 변환 기술
MySQL에서는 다양한 기술을 사용하여 행을 열로 동적으로 변환하는 동시에 새 행을 수용하기 위해 열을 동적으로 추가할 수 있습니다.
GROUP BY 및 MAX 함수 사용
한 가지 방법은 GROUP BY 및 MAX 함수를 활용하는 것입니다. 예를 들어 다음과 같은 행과 열이 있는 테이블을 생각해 보세요.
<code>表A +--+-----+----+ | id | order | data | +--+-----+----+ | 1 | 1 | P | | 2 | 2 | Q | | 2 | 1 | R | | 1 | 2 | S | +--+-----+----+</code>
이러한 행을 열로 변환하려면 다음 쿼리를 사용할 수 있습니다.
<code>SELECT ID, MAX(IF(`order` = 1, data, NULL)) data1, MAX(IF(`order` = 2, data, NULL)) data2 FROM TableA GROUP BY ID</code>
이 쿼리는 ID 열을 기준으로 행을 그룹화하고 MAX 및 IF 문을 사용하여 각 주문 열에 해당하는 값을 반환합니다. 결과는 다음과 같습니다.
<code>+--+-----+-----+ | id | data1 | data2 | +--+-----+-----+ | 1 | P | S | | 2 | R | Q | +--+-----+-----+</code>
동적 SQL 사용
주문 열에 여러 값이 있는 경우 동적 SQL을 사용하는 것이 더 적합할 수 있습니다. 이를 통해 쿼리를 동적으로 생성하고 다양한 주문 수량을 수용할 수 있습니다.
<code>SET @sql = NULL; SELECT GROUP_CONCAT(DISTINCT CONCAT( 'MAX(IF(`order` = ', `order`, ',data,NULL)) AS data', `order`) ) INTO @sql FROM TableName; SET @sql = CONCAT('SELECT ID, ', @sql, ' FROM TableName GROUP BY ID'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;</code>
이 접근 방식은 다양한 순서 값을 기반으로 쿼리를 동적으로 생성함으로써 유연성을 제공하고 결과 테이블이 데이터의 모든 변경 사항에 자동으로 적응하도록 보장합니다.
위 내용은 MySQL에서 행을 열로 동적으로 피벗하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!