mysql - 删除mysql并加入where

标签 mysql join sql-delete

我的 sql 中的以下查询抛出“您无法在 FROM 子句中指定用于更新的目标表 'd'”

DELETE FROM d 
using mdm_certificate_data as d  
where d.trash = 1 and d.modified_at <= DATE_SUB(NOW(), INTERVAL 30 DAY) 
AND NOT EXISTS 
    (select e.serial_number as serial_number 
        FROM mdm_certificate_data e 
        WHERE e.serial_number = d.serial_number 
        and e.serial_number IN ('12345','1234567'));

有人可以帮我重写查询吗?

最佳答案

如果您要对表执行UPDATE/INSERT/DELETE,则无法在内部查询中引用该表(但是,您可以引用该外部表中的字段)。 ..)

重写此方法的一种方法是,

DELETE FROM d 
using mdm_certificate_data as d  
where d.trash = 1 and d.modified_at <= DATE_SUB(NOW(), INTERVAL 30 DAY) 
AND NOT EXISTS 
    (select temp.serial_number as serial_number 
        FROM (select e.serial_number from mdm_certificate_data) temp
            WHERE temp.serial_number = d.serial_number 
            and temp.serial_number IN ('12345','1234567'));

关于mysql - 删除mysql并加入where,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50495531/

相关文章:

php - 连接表后得到错误的值 - MySQL - PHP

MySQL 从 2 个表中删除记录

MySQL - 基于比较插入或更新

MySql 查询根据某些列字段从表中删除重复行?

mysql - Mysql 中的删除查询工作错误

mysql - Magento 安装程序 : Step 2:Add Database: defect note

php - ORDER BY/CASE 组合导致 MySQL 查询不起作用

mysql - 将图像从 MySQL 卸载到磁盘

PHP PDO 包装类实现

java - 带有鉴别器列的对象的 Eclipselink 延迟加载问题