我的 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/