首頁 > 資料庫 > mysql教程 > MySQL UPDATE with CASE:為什麼它會更新所有行以及如何修復它?

MySQL UPDATE with CASE:為什麼它會更新所有行以及如何修復它?

Susan Sarandon
發布: 2024-12-01 07:52:14
原創
370 人瀏覽過

MySQL UPDATE with CASE: Why Does it Update All Rows and How to Fix It?

使用 CASE 進行 MySQL 更新:意外行為和解決方案

在 MySQL UPDATE 查詢中使用 CASE 語句時,了解其對資料。在提供的範例中,原始查詢旨在根據 id 欄位更新特定行。但是,查詢意外更新了所有 2500 萬行,並引入了 NULL 值。

此行為源自於 CASE 語句的性質。如果沒有 ELSE 子句,MySQL 會將任何缺少的條件解釋為等於 NULL。因此,所有與指定 id 值不符的行都會更新為 uid 列的 NULL。

要解決此問題並選擇性地更新特定行,同時保留其他數據,請考慮使用 ELSE 子句來提供預設值價值或維持現有價值。此外,使用 WHERE 子句指定需要更新的行。

例如,以下修改後的查詢解決了這些問題:

UPDATE `table` SET `uid` = CASE
    WHEN id = 1 THEN 2952
    WHEN id = 2 THEN 4925
    WHEN id = 3 THEN 1592
    ELSE `uid`
    END
WHERE id  in (1,2,3)
登入後複製

此查詢現在僅更新具有 id 值的行1、2 和 3 行,其餘行不受影響。透過將 CASE 語句與 ELSE 子句和 WHERE 子句結合,您可以有效率地更新特定行,而不會無意中修改表中的其他資料。

以上是MySQL UPDATE with CASE:為什麼它會更新所有行以及如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板