首先,我知道从 MySQL 5.1.x 开始这是不可能的,它在这里这样说:
http://dev.mysql.com/doc/refman/5.1/en/update.html
不过,我要问的是,是否有一种聪明的方法可以使用临时表/ View 执行查询,而不必诉诸于编写快速脚本来完成这项工作。我的查询(这是完全错误的并且不起作用,仅供在家尝试此操作的人引用)看起来像这样:
UPDATE some_table
set some_col = ( SELECT some_othercol
from some_table
WHERE some_col > some_othercol
);
如果 sol_col > some_othercol
,我试图最终将 some_col
设置为 some_othercol
的值。
在不借助脚本的情况下处理此问题的最佳方法是什么?
编辑 我的子查询返回多行!
最佳答案
我真的不明白为什么你需要一个子查询。这不是你想要的吗?:
UPDATE some_table
SET some_col = some_othercol
WHERE some_col > some_othercol
关于子查询中同一表的 MySQL UPDATE 和 SELECT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2163099/