MySQL新手(来自Oracle),我有这个更新:
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_col2设置为' x'如果the_col设置为' the_value',否则将其设置为' y'。
我所看到的是the_col正在更新,但the_col2。
我没有收到错误报告,因此我假设语法/用法正常。
好像" SET the_col =' the_value'"设置该值,以便在CASE中引用时,它具有新值。我认为这不太可能,但这似乎正在发生。
我想要做的是测试列更新前的值。
答案 0 :(得分:0)
当你设置the_col2案例时,我不认为the_col有新值......
但有一种方法可以找到 - 运行更新两次,执行the_col,然后执行the_col2。比较答案(你必须 - 应该 - 使临时表安全。注意:要创建一个临时测试表(因为你是MySQL的新手,可能会有所不同),a)运行DESCRIBE your_table; b)使用其中的值来创建表temp_table; c)创建一个子查询来读出your_table中的所有行并将它们插入到temp_table中 - 例如插入temp_table值(从表中选择*)。祝你好运。