在执行下面的sql时报错
- 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中不能同时查询一个表的数据再同时进行删除,只能用以下的办法折中
- CREATE TABLE tmp AS SELECT a.id FROM t_user t JOIN temp a ON t.email = a.email;
- DELETE FROM temp WHERE id IN (SELECT id FROM tmp);
先将查询到的数据放到一个临时表中,然后再对临时表进行查询,然后再删除目标表中满足条件的数据。
本文转自sucre03 51CTO博客,原文链接:http://blog.51cto.com/sucre/629493,如需转载请自行联系原作者