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_col 设置为“the_value”,则将 the_col2 设置为“x”,否则将其设置为“y”。
我看到的是 the_col 更新得很好,但是 the_col2 。
我没有收到错误报告,所以我假设语法/用法没问题。
就好像“SET the_col = 'the_value'”设置了值,以便在 CASE 中引用时它具有新值。我认为这不太可能,但这似乎正在发生。
我想要做的是测试更新前列的值。
最佳答案
当您执行 set the_col2 情况时,我认为 the_col 没有新值...
但有一种方法可以找出答案 - 运行更新两次,先执行 the_col,然后执行 the_col2。比较答案(你必须 - 应该 - 创建一个临时表以确保安全。注意:要创建一个临时测试表(因为你是 MySQL 新手,它可能会有所不同),a) 运行 DESCRIBE your_table; b) 使用其中的值创建表 temp_table; c) 创建一个子查询来读出 your_table 中的所有行并将它们插入到 temp_table 中 - 例如插入到 temp_table 值中(从表中选择 *)。祝你好运。
关于MySQL 更新和案例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24457370/