在执行下面的sql时报错

  1. DELETE FROM temp WHERE id IN (SELECT a.id FROM t_user t JOIN temp a ON t.email = a.email); 

这种写法在sqlserver或者oracle中是支持的,但是mysql目前是不支持的,在mysql中不能同时查询一个表的数据再同时进行删除,只能用以下的办法折中

  1. CREATE TABLE tmp AS SELECT a.id FROM t_user t JOIN temp a ON t.email = a.email;  
  2. DELETE FROM temp WHERE id IN (SELECT id FROM tmp); 

先将查询到的数据放到一个临时表中,然后再对临时表进行查询,然后再删除目标表中满足条件的数据。