mysql 刪除符合條件的數據


一般使用=的情況可以直接刪除。如:

  DELETE FROM sys_menu WHERE  pcode = 'member'

但是如果使用帶有查詢本表的select時,sql如下:

  DELETE FROM sys_menu WHERE pcode in (SELECT `code` FROM sys_menu WHERE pcode = 'member')

則會報錯如下:

  You can't specify target table 'sys_menu' for update in FROM clause

  意思是不能先select出同一表中的某些值,再update這個表(在同一語句中)。

這時需要利用臨時表:

  1、建立臨時表

    CREATE TABLE temp(SELECT `code` FROM sys_menu WHERE pcode = 'member')

  2、執行刪除

    DELETE FROM sys_menu WHERE  pcode in (SELECT * FROM temp)

  3、刪除臨時表

    DROP TABLE temp


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM