使用CASE WHEN/THEN/ELSE 更新MySQL MyISAM 表
問:當嘗試使用CASE WHENMyENISA/ELSE 更新大型大型中特定行時的CASE 語句中,查詢會消耗過多的CPU並更新所有行,包括未指定的行。如何限制預期行的更新?
答:當 CASE 語句不包含 ELSE 子句時,就會出現此問題。預設情況下,CASE 語句中未明確提及的行會被指派 NULL 值。這會導致整個表出現不必要的更新。
要解決此問題,請將 ELSE 子句附加到 CASE 語句,並將 uid 列的現有值指派給它。這將防止更新影響 WHEN 子句中未指定的行。
此外,包含 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)
以上是為什麼我的 MySQL MyISAM UPDATE CASE WHEN 失敗以及如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!