简体   繁体   English

mysql的多个案例值

[英]multiple case values mysql

sqlfiddle sqlfiddle

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

;

I need to convert single key into multiple key values. 我需要将单个键转换为多个键值。 Is there any better way than this? 有没有比这更好的方法了?

Thanks for suggestions. 感谢您的建议。

Try more compact forms using IF or GROUP_CONCAT: 使用IF或GROUP_CONCAT尝试使用更紧凑的表格:

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
;  

Demo: http://sqlfiddle.com/#!2/d7a27/11 演示: http : //sqlfiddle.com/#!2/d7a27/11

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM