首页 >数据库 >mysql教程 >为什么我的 MySQL MyISAM UPDATE CASE WHEN 失败以及如何修复它?

为什么我的 MySQL MyISAM UPDATE CASE WHEN 失败以及如何修复它?

Patricia Arquette
Patricia Arquette原创
2024-11-27 18:01:11660浏览

Why Does My MySQL MyISAM UPDATE with CASE WHEN Fail and How Can I Fix It?

使用 CASE WHEN/THEN/ELSE 更新 MySQL MyISAM 表

问:当尝试使用 CASE WHEN/THEN/ELSE 更新大型 MyISAM 表中的特定行时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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn