新到MySQL(从Oracle推出),我有这个UPDATE:MySQL的UPDATE和CASE
UPDATE the_table
SET the_col = 'the_value',
the_col2 = CASE WHEN the_col = 'the_value' THEN 'x' ELSE 'y' END
WHERE a = 1;
的想法是,如果the_col设置为 'the_value' the_col2设置为 'X',否则设置它到'y'。
我所看到的是the_col正在更新,但the_col2。
我没有收到错误报告,所以我假设语法/用法是确定的。
就好像“SET the_col ='the_value'”设置值,以便在CASE中引用它时具有新值。我认为这不太可能,但这似乎是发生了什么。
我想要做的是测试更新前的列值。
如果反转SET的顺序会怎样? – Tom
*如果the_col设置为'the_value',则将the_col2设置为'x'*但查询中所有记录的情况如此 –
@OP:语法正确。价值将被预先设定,并应该工作。你正在使用哪个版本? –