我有一个包含多个互斥列的数据库(不要问我为什么,有人这样创建它。下面是一个示例。

-------------------------------------------
| 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/

10-09 04:24