我知道这是可能的,但是当您需要引用要删除的行时则不行。例如:
select * from `dvd_role` r
left join `dvd_actor2role` a on a.`roleId` = r.id
where a.roleId is null;
这会产生dvd_actor2role表中不存在的违规行,我想删除。但我无法在子查询中使用dvd_role表,或者我收到错误,但我需要该表才能确定要删除的行。
SQL中是否有解决方法?
感谢。
答案 0 :(得分:0)
左边连接并在“右肢”检查为空这些天似乎是一种病态。请改用NOT EXISTS。
SELECT *
FROM dvd_role r
WHERE NOT EXISTS (
SELECT * FROM dvd_actor_role a
WHERE a.roleId = r.id
);
如果一切正常,请用DELETE替换第一个“select *”。