从子查询中的同一个表中的MySQL UPDATE和SELECT

时间:2010-01-29 15:51:31

标签: mysql sql

首先,我知道从M​​ySQL 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的值。

不使用脚本来处理此问题的最佳方法是什么?

修改的 我的子查询返回多行!

3 个答案:

答案 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)