집 >데이터 베이스 >MySQL 튜토리얼 >동적으로 생성된 사용자 정의 열 이름으로 SQL 테이블 데이터를 어떻게 전치할 수 있습니까?
사용자 정의 필드 이름으로 SQL 테이블 데이터 전치
데이터를 피벗하거나 전치하려면 열이 속성을 나타내고 행은 엔터티 데이터를 테이블로 나타내며, 행은 속성을 나타내고 열은 엔터티 데이터를 나타냅니다. 이는 제공된 예제 테이블에서 볼 수 있듯이 사용자 정의 필드 이름으로 작업할 때 종종 유용합니다.
전치된 테이블 쿼리
주어진 테이블을 전치하려면 표시된 대로 SQL 함수와 조건문의 조합을 사용할 수 있습니다. 아래:
SELECT t.UserId, MAX(CASE WHEN t.FieldName = 'Username' THEN t.FieldValue ELSE NULL END) AS Username, MAX(CASE WHEN t.FieldName = 'Password' THEN t.FieldValue ELSE NULL END) AS Password, MAX(CASE WHEN t.FieldName = 'Email Address' THEN t.FieldValue ELSE NULL END) AS Email FROM t GROUP BY t.UserId
설명
준비된 문을 사용한 동적 쿼리
필드 이름의 동적 목록을 처리하려면 MySQL의 준비된 문(동적 SQL)을 활용할 수 있습니다. 구문:
SET @sql = 'SELECT UserId, '; SELECT GROUP_CONCAT(CONCAT('MAX(CASE WHEN FieldName = ''', FieldName, ''' THEN FieldValue ELSE NULL END) AS ', FieldName)) INTO @sql FROM (SELECT DISTINCT FieldName FROM t); SET @sql = CONCAT(@sql, ' FROM t GROUP BY UserId'); PREPARE stmt FROM @sql; EXECUTE stmt;
이 쿼리는 테이블의 고유 필드 이름을 기반으로 SQL 문을 동적으로 작성하고 준비된 문을 사용하여 실행합니다.
위 내용은 동적으로 생성된 사용자 정의 열 이름으로 SQL 테이블 데이터를 어떻게 전치할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!