我需要删除连接表中的条目,其中使用其他表的聚合选择来选择要删除的行(如此处所问)。不幸的是 delete 语句失败并且 MySQL/MariaDB 抛出以下错误:
ERROR 1093 (HY000) at line 1: You can't specify target table 'pcld' for update in FROM clause
我认为支持在同一个表中基于 select 子句删除表中的数据。
MariaDB 版本是“mysql Ver 15.1 Distrib 5.5.65-MariaDB, for Linux (x86_64)”
SQL 脚本
DELETE pcld
FROM persons_linked_companies as pcld
WHERE pcld.id IN(
SELECT
id
FROM
persons_linked_companies pcl
WHERE
companies_id = (SELECT
c.id
FROM
companies c
INNER JOIN entities e ON e.company_id = c.id
INNER JOIN persons p ON p.entity_id = e.id
WHERE
p.id = pcl.persons_id)
)