집 >데이터 베이스 >MySQL 튜토리얼 >행 값에서 동적 열 이름을 사용하여 MySQL 테이블을 어떻게 피벗할 수 있습니까?
MySQL 동적 행 값을 열 이름으로 사용
MySQL에는 동적 행 값을 열 이름으로 갖고 피벗 테이블 형식으로 표시되는 레거시 테이블 데이터에 대한 기본 피벗 기능이 없습니다. 그러나 GROUP_CONCAT()
을 사용하여 준비된 명령문은 원하는 결과를 얻는 데 도움이 될 수 있습니다.
샘플 테이블:
<code class="language-sql">id name value ------------------------------ 0 timezone Europe/London 0 language en 0 country 45 0 something x 1 timezone Europe/Paris 1 language fr 1 country 46</code>
목표 출력:
<code>id timezone language country something --------------------------------------------------- 0 Europe/London en 45 x 1 Europe/Paris fr 46</code>
다음과 같이 준비된 명령문을 구성합니다.
<code class="language-sql">SELECT CONCAT( 'SELECT `table`.id', GROUP_CONCAT(' , `t_', REPLACE(name, '`', '``'), '`.value AS `', REPLACE(name, '`', '``'), '`' SEPARATOR ''), ' FROM `table` ', GROUP_CONCAT(' LEFT JOIN `table` AS `t_', REPLACE(name, '`', '``'), '` ON `table`.id = `t_', REPLACE(name, '`', '``'), '`.id AND `t_', REPLACE(name, '`', '``'), '`.name = ', QUOTE(name) SEPARATOR ''), ' GROUP BY `table`.id' ) INTO @qry FROM (SELECT DISTINCT name FROM `table`) t; PREPARE stmt FROM @qry; EXECUTE stmt;</code>
이 쿼리는 SELECT
을 사용하여 동일한 LEFT JOIN
값이 있는 행을 결합하고 고유한 id
값에 해당하는 값을 추출하는 name
문을 동적으로 생성합니다. 그런 다음 id
을 눌러 결과를 그룹화하여 원하는 피벗 테이블 형식을 생성하세요.
MySQL에는 기본 피벗 기능이 없지만 이 방법은 구조화된 방식으로 동적 열 이름이 있는 레거시 테이블에서 데이터를 검색하는 방법을 제공합니다.
위 내용은 행 값에서 동적 열 이름을 사용하여 MySQL 테이블을 어떻게 피벗할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!