我在执行子查询时遇到问题,以便删除应用程序中的某些特定行。这是我错误的SQL:
delete from player_news_items
where id IN
(select id from player_news_items
where player_id NOT IN (select id from players));
编写此查询的正确方法是什么?
答案 0 :(得分:3)
在MySQL中,除非使用update
,否则无法引用delete
或join
中正在修改的表格。但是,我想你可能只想要这个:
delete pni
from player_news_items pni
where player_id NOT IN (select id from players));
作为一个说明,我建议用not exists
:
delete pni
from player_news_items pni
where not exists (select 1 from players p where p.player_id = pni.player_id);