首先,我知道从MySQL 5.1.x开始这是不可能的,它就在这里说:
http://dev.mysql.com/doc/refman/5.1/en/update.html
我要问的是,是否有一种聪明的方法可以使用临时表/视图执行查询,而无需编写快速脚本来完成工作。我的查询(完全错误且无法正常工作,只是人们在家中尝试此操作的FYI)看起来像这样:
UPDATE some_table
set some_col = ( SELECT some_othercol
from some_table
WHERE some_col > some_othercol
);
如果some_col
,我正试图将some_othercol
最终设置为sol_col > some_othercol
的值。
不使用脚本来处理此问题的最佳方法是什么?
修改的 我的子查询返回多行!
答案 0 :(得分:3)
我真的不明白你为什么需要子查询。这不是你想要的吗?:
UPDATE some_table
SET some_col = some_othercol
WHERE some_col > some_othercol
答案 1 :(得分:2)
我不确定这是不是你想要做的,但也许我可以告诉你一些事情让你走上正确的道路。
UPDATE some_table ST
SET some_col = (
SELECT some_col
FROM some_table OT
WHERE OT.ID = ST.ID
)
WHERE ST.some_col > 2
这会将some_col设置为自己的值,但仅当some_col已经大于2.我知道这没有做任何事情,但它显示的概念可能更接近你正在寻找的东西。如果你更详细地说明最终会发生什么,我可以帮助你找到更接近你需要的解决方案。
答案 2 :(得分:0)