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

标签 mysql sql

首先,我知道从 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/

相关文章:

sql - Oracle表在同一个表中插入时自动递增

sql - 如何逐列选择用户的最大日期?

php - 对同一个表进行多次请求的SQL语句

mysql - 如何在 mysql 中将 bigint 更改为 int,表具有外键

sql - 仅选择 SQL 关系中的最大值?

sql - Ingres 中的 DATE_ADD 功能

mysql - 从 Mysql 查询中过滤整数结果

java - 准备好的语句的 JDBC JAVAFX 日期

php - 带有 session 的网页,用于对 Android 应用程序进行身份验证

mysql - 如何在MySQL Workbench中执行SQL脚本?