mysql - 使用Where子句中的查询更新表

标签 mysql sql

下面的查询我做错了什么

Error Message :  You can't specify target table 'cp_asseteventinquiry' for update in FROM clause

查询:

UPDATE cp_asseteventinquiry
SET Due_Date= curdate()
WHERE TopLevelAsset_Num =
(
   SELECT Distinct(TopLevelAsset_Num) FROM cp_asseteventinquiry
   WHERE cp_asseteventinquiry.History='NO'
   AND NOT EXISTS(SELECT Scheduled_Date FROM flightlogs
   WHERE flightlogs.Asset=cp_asseteventinquiry.TopLevelAsset_Num 
   AND flightlogs.Scheduled_Date=date_format (curdate(), '%m/%d/%Y'))
);

最佳答案

只需使用 SELECT 包装您的内部查询,如下所示:

UPDATE cp_asseteventinquiry
SET Due_Date= curdate()
WHERE TopLevelAsset_Num = (
    SELECT * 
    FROM ( 
          SELECT Distinct(TopLevelAsset_Num)
          FROM cp_asseteventinquiry
          WHERE cp_asseteventinquiry.History='NO'
            AND NOT EXISTS( SELECT Scheduled_Date 
                            FROM flightlogs 
                            WHERE flightlogs.Asset=cp_asseteventinquiry.TopLevelAsset_Num
                              AND flightlogs.Scheduled_Date=date_format (curdate(), '%m/%d/%Y')
            )
    ) AS t)

关于mysql - 使用Where子句中的查询更新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27972617/

相关文章:

Mysql ADDTIME函数给出错误截断不正确的时间值: '35 00:00:00'

sql - mysql更快的匹配内部字符串的方法

sql - 如何返回 DBTIMEZONE 名称

mysql - 截断命令(Hive 与 SQL)

sql - 由于 SYS_OP_C2C 内部转换,Oracle SQL 执行计划发生变化

sql - 如何增加 LOAD DATA INFILE 查询的最大上传文件大小?

php - 将列添加到表并将该列的所有行的值设置为指定值

php - 数据库值达到一定数量后如何禁用图像链接

MySql 查询优化

java - 无法写入 MySQL 时重置连接