日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL UPDATE 语句一个“经典”的坑

發布時間:2023/12/3 数据库 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL UPDATE 语句一个“经典”的坑 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載自??MySQL UPDATE 語句一個“經典”的坑

來源:ju.outofmemory.cn/entry/336774

  • 有問題的SQL語句

  • why?

  • 倒回去再重試驗一把


最近好幾次有開發同學在釘釘上問我,比如下圖:

問題歸納起來就是:在MySQL里面update一條記錄,語法都正確的,但記錄并沒有被更新...

剛遇到這個問題的時候,我拿到這條語句直接在測試庫里面執行了一把,發現確實有問題,但和開發描述的還是 有區別 ,這里我用測試數據來模擬下:

有問題的SQL語句

執行之前的記錄是這樣的:

執行之后的記錄是這樣的:

可以看到,結果并不像這位開發同學說的“好像沒有效果”,實際上是有效果的:

?

why?

看起來,語法是完全沒有問題,翻了翻MySQL官方文檔的update語法:

看到assignment_list的格式是以逗號分隔的col_name=value列表,一下子豁然開朗,開發同學想要的多字段更新語句應該這樣寫:

?

倒回去再重試驗一把

果然,這下得到了想要的結果!

小結 :?在一條UPDATE語句中,如果要更新多個字段,字段間不能使用“AND”,而應該用逗號分隔。

**后記 :**后面等有空的時候,又回過頭來看了一下,為什么使用“AND”分隔的時候,會出現owner_code=0的奇怪結果?多次嘗試之后發現:

等價于:

而 ('43212' and owner_name='李四') 是一個邏輯表達式,而這里不難知道owner_name并不是‘李四’。因此,這個邏輯表達式的結果為 false , false在MySQL中等價于0!

?

總結

以上是生活随笔為你收集整理的MySQL UPDATE 语句一个“经典”的坑的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。