집 >데이터 베이스 >MySQL 튜토리얼 >MySQL에서 열을 행으로 피벗 해제하는 방법은 무엇입니까?
MySQL에서 열을 행으로 변환하는 방법
MySQL에서 열로 구성된 데이터로 작업할 때 데이터를 행으로 표시하는 형식으로 변환해야 할 수도 있습니다. 이 프로세스를 피벗 해제라고 합니다.
질문:
다음 형식을 고려하세요.
<code>ID | a | b | c 1 | a1 | b1 | c1 2 | a2 | b2 | c2</code>
목표는 열을 행으로 변환하여 다음 구조의 테이블을 얻는 것입니다.
<code>ID | 值 | 列名 1 | a1 | a 1 | b1 | b 1 | c1 | c 2 | a2 | a 2 | b2 | b 2 | c2 | c</code>
해결책:
일부 다른 데이터베이스와 달리 MySQL에는 해제 기능이 내장되어 있지 않습니다. 원하는 결과를 얻으려면 UNION ALL
쿼리를 사용하여 각 열을 선택적으로 행으로 변환하는 별도의 쿼리를 결합할 수 있습니다.
<code class="language-sql">SELECT id, 'a' AS col, a AS value FROM yourtable UNION ALL SELECT id, 'b' AS col, b AS value FROM yourtable UNION ALL SELECT id, 'c' AS col, c AS value FROM yourtable;</code>
이 쿼리는 각 열에 하나씩 세 가지 데이터 세트를 생성합니다. 각 그룹에는 ID, 열 이름 및 해당 값이 포함됩니다.
CROSS JOIN 사용:
또 다른 방법은 CROSS JOIN
:
<code class="language-sql">SELECT t.id, c.col, CASE c.col WHEN 'a' THEN a WHEN 'b' THEN b WHEN 'c' THEN c END AS data FROM yourtable t CROSS JOIN ( SELECT 'a' AS col UNION ALL SELECT 'b' UNION ALL SELECT 'c' ) c;</code>
이 경우 CROSS JOIN
은 yourtable
의 행과 열 이름을 생성하는 하위 쿼리의 행 사이에 데카르트 곱을 생성합니다. CASE
문은 각 열 이름을 해당 열 값에 매핑합니다.
두 가지 방법 모두 효과적으로 데이터를 풀어 원하는 행 기반 구조를 제공합니다.
위 내용은 MySQL에서 열을 행으로 피벗 해제하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!