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)  
-----執行成功


總結:此種刪除時建立臨時表是關鍵。。。。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章