mysql delete where not in

mysql中 
Java代码  收藏代码
  1. delete from sns_hits where id not in (123)  
是没有问题的 
Java代码  收藏代码
  1. delete from sns_hits where id not in (select id from another_table)  
也是么有问题的 

但是 
Java代码  收藏代码
  1. delete from sns_hits where id not in (select id from sns_hits)   
就TMD有问题了 

解决棒法是创建临时表 
Java代码  收藏代码
  1. CREATE TEMPORARY TABLE tmp_sns_hits (  
  2.   `id` BIGINT(20)   


亲自实验的demo:

DELETE from user WHERE id not in (SELECT id from user WHERE id >4)  
----此语句执行报错[Err] 1093 - You can't specify target table 'user' for update in FROM clause


DELETE from user WHERE id not in (SELECT * from (SELECT id from user u WHERE u.id>4)u)  
-----执行成功


总结:此种删除时建立临时表是关键。。。。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章