MySQL常見錯誤總結
阿新 • • 發佈:2018-10-24
解決方法 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常見錯誤總結