쿼리 결과에서 컬럼 값을 컬럼 이름으로 설정하려면 CASE 문을 사용해야 합니다.
구문은 다음과 같습니다 -
select yourIdColumnName,max(case when (yourColumnName1='yourValue1') then yourColumnName2 else NULLend) as 'yourValue1',max(case when (yourColumnName1='yourValue2') then yourColumnName2 else NULLend) as 'yourValue2',max( 경우 yourColumnName1='yourValue3') then yourColumnName2 else NULLend) as 'yourValue3',..Nfrom valueAsColumngroup by yourIdColumnNameorder by yourIdColumnName;
위의 구문을 이해하기 위해 테이블을 생성해 보겠습니다. 테이블을 생성하는 쿼리는 다음과 같습니다 -
mysql> 테이블 생성 valueAsColumn -> ( -> UserId int, -> UserColumn1 varchar(10), -> UserColumn2 varchar(10) -> );쿼리 OK, 영향을 받는 행 0개(0.75초)
이제 insert 명령을 사용하여 테이블에 일부 레코드를 삽입할 수 있습니다. 쿼리는 다음과 같습니다 -
mysql> insert into valueAsColumn values(0,'John','A+');Query OK, 1행 영향(0.18초)mysql> insert into valueAsColumn values(0,'Carol','B');Query 확인, 1개 행이 영향을 받았습니다(0.17초)mysql> valueAsColumn 값에 삽입(0,'Sam','C'); 쿼리 확인, 1행이 영향을 받았습니다(0.17초)mysql> valueAsColumn 값에 삽입(1,'John', 'D');쿼리 확인, 1행 영향(0.20초)mysql> valueAsColumn values(1,'Carol','A')에 삽입;Query OK, 1행 영향(0.20초)mysql> valueAsColumn 값에 삽입( 1,'Carol','C');쿼리 OK, 영향을 받는 행 1개(0.15초)
select 문을 사용하여 테이블의 모든 레코드를 표시합니다. 쿼리는 다음과 같습니다 -
mysql> select *from valueAsColumn;
다음은 출력입니다 -
+--------+-------------+------------+| 사용자 ID | 사용자 열1 | UserColumn2 |+--------+-------------+------------+| 0 | 존 | A+ || 0 | 캐롤 | 나 || 0 | 샘 | ㄷ || 1 | 존 | 디 || 1 | 캐롤 | 에이 || 1 | 캐롤 | C |+--------+-------------+------------+6행 세트(0.00초)사전>열 값을 열 이름으로 설정하는 쿼리는 다음과 같습니다. -
mysql> Select UserId, -> max(case when (UserColumn1='John') then UserColumn2 else NULL end) as 'John', -> max(case when (UserColumn1='Carol') then UserColumn2 else NULL end) ) 'Carol', -> max(case when (UserColumn1='Sam') then UserColumn2 else NULL end) 'Sam' -> valueAsColumn -> Group by UserId -> order by UserId;다음은 출력입니다 -
+--------+------+-------+------+| 사용자 ID | 존 | 캐롤 | 샘 |+--------+------+-------+------+| 0 | A+ | 나 | ㄷ || 1 | 디 | C | NULL |+--------+------+-------+---+세트의 행 2개(0.00초)