1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        MySQL UPDATE語句一個“經(jīng)典”的坑

        共 1433字,需瀏覽 3分鐘

         ·

        2021-10-16 08:28

        點擊上方“程序員大白”,選擇“星標”公眾號

        重磅干貨,第一時間送達

        起因

        最近好幾次有開發(fā)同學(xué)在釘釘上問我,比如下圖:

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

        結(jié)論

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

        推薦:以問題為切入點,是學(xué)習(xí)MySQL的最好方式

        現(xiàn)象

        剛遇到這個問題的時候,我拿到這條語句直接在測試庫里面執(zhí)行了一把,發(fā)現(xiàn)確實有問題,但和開發(fā)描述的還是有區(qū)別,這里我用測試數(shù)據(jù)來模擬下:

        有問題的SQL語句:

        update?apps?set?owner_code='43212'?and?owner_name='李四'?where?owner_code='13245'?and?owner_name='張三';??

        執(zhí)行之前的記錄是這樣的:


        執(zhí)行之后的記錄是這樣的:


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

        owner_name的值沒有變,但owner_code變成了0!??

        why??分析

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

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

        update?apps?set?owner_code='43212'?,?owner_name='李四'?where?owner_code='13245'?and?owner_name='張三';??

        倒回去再重試驗一把:

        果然,這下得到了想要的結(jié)果!

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

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

        update?apps?set?owner_code='43212'?and?owner_name='李四'?where?owner_code='13245'?and?owner_name='張三';??

        等價于:

        update?apps?set?owner_code=('43212'?and?owner_name='李四')?where?owner_code='13245'?and?owner_name='張三';??

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

        國產(chǎn)小眾瀏覽器因屏蔽視頻廣告,被索賠100萬(后續(xù))

        年輕人“不講武德”:因看黃片上癮,把網(wǎng)站和786名女主播起訴了

        中國聯(lián)通官網(wǎng)被發(fā)現(xiàn)含木馬腳本,可向用戶推廣色情APP

        張一鳴:每個逆襲的年輕人,都具備的底層能力


        關(guān)


        ,學(xué),西學(xué)學(xué),質(zhì),結(jié),關(guān)[],學(xué)習(xí)!


        瀏覽 60
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            91极品尤物 | 亚洲美女爱爱 | 欧美极品一区二区 | 激情五月天成人 | 人妻竹内纱被小鬼玩 | 日韩精品人妻一区二区中文八零网 | 含着她花蒂啃到高潮视频 | 亚洲黄色电影网 | 好大好紧好舒服 | 日本三a级 |