집 >데이터 베이스 >MySQL 튜토리얼 >단일 열의 동적 열 이름을 사용하여 MySQL에서 데이터를 피벗하는 방법은 무엇입니까?
질문:
이전 MySQL 테이블에서는 데이터에 "name"이라는 단일 열에 고유한 값으로 저장된 변경 가능한 열 이름이 있었습니다. 이 데이터를 피벗 형식으로 변환하는 쿼리가 필요합니다. 여기서 이름 값은 열 헤더가 되고 해당 필드 값은 해당 헤더 아래의 값이 됩니다.
해결책:
피벗에 대한 기본 지원이 부족함에도 불구하고 MySQL은 동적 SQL 및 GROUP_CONCAT() 함수를 통해 이를 달성할 수 있습니다.
MySQL 쿼리:
<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>
지침:
결과:
쿼리는 이름 값을 열 헤더로, 필드 값을 해당 값으로 사용하여 피벗된 결과 집합을 반환합니다.
id | timezone | language | country | something |
---|---|---|---|---|
0 | Europe/London | en | 45 | x |
1 | Europe/Paris | fr | 46 | NULL |
위 내용은 단일 열의 동적 열 이름을 사용하여 MySQL에서 데이터를 피벗하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!