【发布时间】:2011-04-06 02:35:08
【问题描述】:
我需要从表中删除某些行。必须删除哪些行是我通过查询发现的。但是,it appears that you cannot do both operations (select and delete) in the same query:
目前,您无法从 表并从同一个表中选择 在子查询中。
所以我不能这样做:
DELETE
FROM telefono
WHERE telefono_id IN (
SELECT te.telefono_id
FROM telefono te
LEFT JOIN centro_telefono ce ON te.telefono_id=ce.telefono_id AND ce.telefono_id IS NOT NULL
LEFT JOIN contacto_telefono co ON te.telefono_id=co.telefono_id AND co.telefono_id IS NOT NULL
WHERE COALESCE(ce.telefono_id, co.telefono_id) IS NULL AND te.fecha_alta < DATE_SUB(NOW(), INTERVAL 1 DAY)
);
-- SQL Error (1093): You can't specify target table for update in FROM clause
如何在纯 MySQL 中实现这种记录清理?
服务器运行 MySQL 5.1.39。
【问题讨论】:
-
为什么它必须在“纯” MySQL 中?
-
@NullUserException:我不想增加额外的复杂性(编写 PHP 脚本,通过 cron 配置它,测试它是否运行成功......)。此外,SQL 代码可以直接从 MySQL 事件或存储的例程中触发。
标签: mysql sql innodb mysql-error-1093