【发布时间】:2015-10-14 12:18:22
【问题描述】:
我有一个表,我想通过考虑一些条件来更新特定列。例如 var1 将根据 columnCtrong> 字段获得不同的值。我正在使用下面的代码,并且在 MySQL Workbench 上没有出现错误,但我有 0 行受到影响。 var1 在我运行脚本时不会改变。
update table
set number = columnA * columnB,
var1 = case
when lower(columnC) like '%aaa%' then var1 = number
when lower(columnC) like '%bbb%' then var1 = number * 2
when lower(columnC) like '%ccc%' then var1 = number * 4
else lower(columnC)
end,
var2 = number / var1
;
我尝试对每个案例分别进行不同的更新。
update table
set number = columnA * columnB;
效果很好。
update table
set var1 = number where lower(columnC) like 'aaa';
这根本不起作用。列不受影响。我还尝试删除“较低”或放置特定的 field.value 而不是变量,但没有成功
【问题讨论】:
-
then number等直接,不需要var=number -
表中目前有哪些数据?什么是表架构?为什么你使用没有通配符的
LIKE- 你应该可以使用=来获得相同的结果。 -
另外
like 'aaa'被翻译成='aaa'所以你可能需要通配符like '%aaa%'; -
对于
else,我想你的意思是var1。 -
@Mihai 我有这个通配符。
标签: mysql sql-update set case