2014-11-21 2 views
0

sqlfiddle다수의 경우는 mysql을 내가 여러 키 값으로 하나의 키를 변환 할 필요가

SELECT id, 
(
CASE 
    WHEN keyName="disable_id" THEN "disableId" 

END) AS name1, 

(CASE 
    WHEN keyName="disable_id" THEN keyValue 

END) 
AS value1 

FROM mytbl 

UNION 

SELECT id, 
(
CASE 
    WHEN keyName="disable_id" THEN "is_disabled" 
END) AS name1, 

(CASE 
    WHEN keyName="disable_id" THEN "yes" 
END) 
AS value1 

FROM mytbl 

; 

에게 값. 이것보다 좋은 방법이 있습니까?

제안 해 주셔서 감사합니다. IF 또는 GROUP_CONCAT를 사용하여

+0

이 방법을 사용할 때 직면하고있는 문제는 무엇인가? 나는 이것이 좋은 방법이라고 생각한다. 왜 다른 방법을 찾고있어? –

+0

기본적으로 큰 쿼리가 있으므로 여러 번 유니온이 매우 커집니다. 그래서 우리가 하나의 질의로 그것을 할 수 있다는 것을 검사하는 것만 가능합니다. – manish

+0

정말 나쁜 예이지만 신입 사원입니다. 시뮬레이션 된 결과를 수동으로 생성하더라도 게시물을 편집하고 보유하고있는 실제 샘플 데이터 및 실제로 벗어나려고하는 샘플 데이터를 표시 할 수 있습니까? 서식 지정시 탭 키를 사용하지 말고 공백 만 사용하십시오. – DRapp

답변

0

시도 컴팩트 형태 :

SELECT id, 
    max(if(`keyName`='disable_id',`keyValue`,null)) disable_id, 
    max(if(`keyName`='disable_xx',`keyValue`,null)) disable_xx, 
    max(if(`keyName`='disable_yy',`keyValue`,null)) disable_yy, 
    max(if(`keyName`='disable_zz',`keyValue`,null)) disable_zz 
FROM mytbl 
GROUP BY id 
; 

SELECT id, 
     GROUP_CONCAT(`keyName`,'=',`keyValue`) as val 
FROM mytbl 
GROUP BY id 
; 

데모 : http://sqlfiddle.com/#!2/d7a27/11

+0

아니요, 기본적으로 키 값 형식으로 만 필요합니다. 출력은 내 sqlfiddle 출력과 동일해야합니다. – manish

+0

이제는 UNION ALL -> http://sqlfiddle.com/#!2/a57b3/1을 시도 할 수 있습니다. – krokodilko

관련 문제