如何基于同一表的另一列的值更新特定的表列?

时间:2019-10-03 21:37:27

标签: mysql

假设我有4列:A,B,C,D和另外一列:一行中的索引。

假设我要保存“ 50”的值,但是根据行的“ Index”值,mysql将在A,B,C,D中保存50。说如果该特定行的Index = 1,则50转到“ A”列。

是否存在一个可以一次完成所有操作的mysql查询?还是我必须首先读取索引值,然后使用四个不同的更新查询创建switch语句来完成此操作?

1 个答案:

答案 0 :(得分:0)

这是一种实现方法:

UPDATE mytable
SET 
    A = CASE WHEN index = 1 THEN 50 ELSE A END,
    B = CASE WHEN index = 2 THEN 50 ELSE B END,
    C = CASE WHEN index = 3 THEN 50 ELSE C END,
    D = CASE WHEN index = 4 THEN 50 ELSE D END
WHERE ...

该查询通过根据index的值对每列进行条件值分配来工作。当不需要更新列时,只需重新分配其原始值即可,从而将操作变为无操作。