1. 程式人生 > >MySQL常見錯誤總結

MySQL常見錯誤總結

解決方法 margin group 更新 mys 條件 left for ins

1)DELETE語句不能直接使用表的別名

  執行insert,update,delete語句時,我們為了方便常給表加上別名,這在Oracle下完全沒有問題,但是MySQL的delete語句後面不可以直接使用表的別名,會提示語法錯誤,如下面這條語句就是錯誤的,

  DELETE FROM `user` a WHERE a.USER_NAME = ‘lisi‘; -- 錯誤的

  正確的寫法,DELETE a FROM `user` a WHERE a.USER_NAME = ‘lisi‘,在delete和from之間加表的別名

2)刪除一張表的某些記錄時,where條件是通過查詢這張表獲得的導致報錯You can‘t specify target table ‘s‘ for update in FROM clause

  執行SQL語句時出現這個錯誤。原因是在更新這個表和數據時又查詢了它,而查詢的數據又做了更新的條件。以前ORACLE上面沒有這個錯誤。

解決方法1.新建一張臨時表,刪除之後,把這張臨時表刪除。2.第二種方法,在where條件外再包一層查詢就可以避免這種錯誤如

DELETE FROM tempA WHERE tid NOT IN (
    SELECT t.tid FROM (
      SELECT MAX(tid) AS tid FROM tempA GROUP BY name,age
    ) t
)

MySQL常見錯誤總結