MySQL不支持DELETE使用表別名?


  最近做的需求經常和數據庫在打交道, 因為系統頁面上某些展示的字段並不是在前端寫死的, 而是配置在數據庫中, 這樣的話便於維護和擴展. 於是遇到了一個MySQL中比較細節性的問題.

  日常開發中不少程序員認為MySQL不支持DELETE數據時使用別名, 之前我也是這么認為的, 但是由於最近的需求中使用delete語句比較多, 字段也比較多(取的字段名是比較奇葩難記住的), 所以想着能不能在delete數據的時候使用別名, 這樣便於快速找到作為條件的字段名. 於是搜了一下博客, 發現好多博客也是這樣寫的, 說MySQL數據庫delete數據時不支持使用表別名. 舉個例子 如下篇博客:

 

 

 

  這里先說一下我查完資料的結論, MySQL數據庫DELETE數據時是可以支持別名的, 只不過沒用對罷了.(溫馨提示一下: 遇到某個比較疑惑問題的時候, 看博客記得多看幾篇, 因為你看的博客有可能不正確, 如上圖)

開始驗證:(以下只是簡單舉例子, 實際開發中肯定比這個復雜一些)

現在我需要刪除掉聯系人表中的記錄. 刪除的條件根據字段(single_str_node_rule)來刪除的.

正常不使用別名時刪除:

DELETE FROM contact WHERE single_str_node_rule = 'cd269a75f541a45bb2ec3636c6e3648b';

OK, 這個語句沒有問題

 

 使用別名刪除時錯誤用法:

DELETE FROM contact c WHERE c.single_str_node_rule = 'bc33be06aa8937f4a0354b71eac0abcd';

報錯:

使用別名刪除正確用法:

DELETE c FROM contact c WHERE c.single_str_node_rule = 'bc33be06aa8937f4a0354b71eac0abcd';

OK, 刪除記錄成功

 

 

得出結論:

MySQL數據庫DELETE數據時是可以支持別名的. 只不過需要在DELETE 和 FROM 直接來加上這個別名.

 

 

 


免責聲明!

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



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