MySQL에서 데이터를 행에서 열로 동적으로 변경해야 합니까? 이 강력한 데이터베이스 시스템은 중요한 데이터 변환을 위한 효율적인 방법을 제공합니다.
두 개의 테이블 A와 B를 생각해 보세요. 테이블 A에는 ID 열이 포함되어 있고 테이블 B에는 피벗 테이블 구조와 유사한 각 ID와 연결된 여러 값이 포함되어 있습니다. 과제: 테이블 B의 행을 결과 집합의 열로 동적으로 변환합니다.
MySQL의 GROUP BY
및 MAX
기능은 우아한 솔루션을 제공합니다. ID를 사용하여 데이터를 그룹화하고 MAX
기능을 사용하여 피벗 작업을 효과적으로 시뮬레이션합니다. 테이블 A와 B를 사용한 간단한 예:
<code class="language-sql">SELECT ID, MAX(IF(`order` = 1, data, NULL)) data1, MAX(IF(`order` = 2, data, NULL)) data2 FROM TableA GROUP BY ID</code>
이 쿼리는 출력에서 테이블 B의 행을 data1
및 data2
열로 변환합니다. IF
문은 각 주문에 대해 올바른 데이터만 선택되도록 보장합니다.
주문 값이 많은 더 복잡한 시나리오의 경우 동적 SQL이 유연한 접근 방식을 제공합니다. 쿼리는 개별 주문 수에 따라 자동으로 조정됩니다.
<code class="language-sql">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>
정적 및 동적 SQL 접근 방식 모두 MySQL에서 효율적인 행-열 변환을 지원하여 데이터 분석을 강화하고 복잡한 데이터 세트에서 귀중한 통찰력을 얻을 수 있습니다.
위 내용은 MySQL에서 행을 열로 동적으로 변환하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!