> 데이터 베이스 > MySQL 튜토리얼 > MySQL에서 행을 열로 동적으로 변환하는 방법은 무엇입니까?

MySQL에서 행을 열로 동적으로 변환하는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2025-01-14 11:22:46
원래의
816명이 탐색했습니다.

How to Dynamically Convert Rows to Columns in MySQL?

MySQL 동적 행-열 쿼리

MySQL은 행 데이터를 열 데이터로 변환하는 기능을 지원하므로 필요에 따라 새 열을 동적으로 추가할 수 있습니다. 이 프로세스는 데이터를 보다 사용자 친화적인 표 형식으로 표시하는 피벗 테이블과 관련되는 경우가 많습니다. 이 변환을 수행하려면 GROUP BYMAX 기능을 사용할 수 있습니다.

다음은 테이블 A와 테이블 B가 포함된 예입니다.

<code>表 A
+--+-----+----+
|id|order|data|
+--+-----+----+
|1 |1    |P   |
+--+-----+----+
|2 |2    |Q   |
+--+-----+----+
|2 |1    |R   |
+--+-----+----+
|1 |2    |S   |
+--+-----+----+

表 B
+--+----+----+
|id|name|value|
+--+----+----+
|1 |name1|data1|
+--+----+----+
|1 |name2|data2|
+--+----+----+
|2 |name1|data3|
+--+----+----+
|2 |name2|data4|
+--+----+----+</code>
로그인 후 복사

이 데이터 구조를 행과 열이 있는 테이블로 변환하려면 다음 쿼리를 사용할 수 있습니다.

<code class="language-sql">SELECT  ID,
        MAX(IF(`order` = 1, data, NULL)) AS data1,
        MAX(IF(`order` = 2, data, NULL)) AS data2
FROM    TableA
GROUP   BY ID</code>
로그인 후 복사

이 쿼리의 결과는 다음과 같습니다.

<code>+--+-----+-----+
|id|data1|data2|
+--+-----+-----+
|1 |P    |S    |
+--+-----+-----+
|2 |R    |Q    |
+--+-----+-----+</code>
로그인 후 복사

보시다시피 테이블 B의 각 행은 결과 테이블의 열로 변환되었습니다.

데이터에 동일한 "순서" 필드에 대한 여러 값이 포함되어 있는 경우 동적 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에서 행을 열로 동적으로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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