MySQL子查询删除行

时间:2014-10-28 16:24:24

标签: mysql

我在执行子查询时遇到问题,以便删除应用程序中的某些特定行。这是我错误的SQL:

   delete from player_news_items 
     where id IN 
      (select id from player_news_items 
      where player_id NOT IN (select id from players));

编写此查询的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

在MySQL中,除非使用update,否则无法引用deletejoin中正在修改的表格。但是,我想你可能只想要这个:

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);
相关问题