繁体   English   中英

来自子查询中同一表的MySQL UPDATE和SELECT

[英]MySQL UPDATE and SELECT from same table in subquery

首先,我知道从M​​ySQL 5.1.x开始这是不可能的,它在这里这样说:

http://dev.mysql.com/doc/refman/5.1/en/update.html

我要问的是,是否有一种聪明的方法可以使用临时表/视图执行查询,而不必借助编写快速脚本来完成工作。 我的查询(完全错误并且无法正常工作,仅供在家里尝试的人参考)看起来像这样:

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

我不确定这是否正是您要尝试的方法,但是也许我可以向您展示一些东西,以使您走上正确的道路。

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时。我知道这不会做任何事情,但是它显示的概念可能更接近您想要的内容。 如果您最后给出了一些详细信息,我可能会帮助您找到更接近您需要的解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM