假设我有4列:A,B,C,D和另外一列:一行中的索引。
假设我要保存“ 50”的值,但是根据行的“ Index”值,mysql将在A,B,C,D中保存50。说如果该特定行的Index = 1,则50转到“ A”列。
是否存在一个可以一次完成所有操作的mysql查询?还是我必须首先读取索引值,然后使用四个不同的更新查询创建switch语句来完成此操作?
答案 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
的值对每列进行条件值分配来工作。当不需要更新列时,只需重新分配其原始值即可,从而将操作变为无操作。