我有一个包含多个互斥列的数据库(不要问我为什么,有人这样创建它。下面是一个示例。
-------------------------------------------
| ID | BLACK | WHITE | RED | GREEN | BLUE |
-------------------------------------------
| 1 | 1 | 0 | 0 | 0 | 0 |
-------------------------------------------
| 2 | 0 | 0 | 1 | 0 | 0 |
-------------------------------------------
| 3 | 0 | 1 | 0 | 0 | 0 |
-------------------------------------------
好了,您就知道了,它包含成千上万条记录。现在,如何将其合并为单个“COLOR”列。像下面一样。
--------------
| ID | COLOR |
--------------
| 1 | BLACK |
--------------
| 2 | RED |
--------------
| 3 | WHITE |
--------------
我现在能想到的就是做其中的5个
UPDATE table SET COLOR = 'BLACK' WHERE BLACK = 1
哦,我忘了提一下,我当前正在处理的表包含至少 15个互斥列!有没有更简单的方法可以做到这一点?
编辑
将“颜色”更改为“颜色”
最佳答案
使用case-expression
,如以下缩写示例所示:
update table
set color=
case
when black then "black"
when red then "red"
when blue then "blue"
end;
这是一个sqlfiddle
关于mysql - 如何在MySQL中合并互斥列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37783830/