首页 >数据库 >mysql教程 >如何使用 CASE 批量更新具有条件值的 MySQL 条目?

如何使用 CASE 批量更新具有条件值的 MySQL 条目?

Susan Sarandon
Susan Sarandon原创
2024-11-16 09:35:03380浏览

How to Mass Update MySQL Entries with Conditional Values Using CASE?

使用 CASE 批量更新具有条件值的 MySQL 条目

在 MySQL 中,您可以使用 CASE 语句根据特定条件更新表条目。操作方法如下:

问题:匹配价格更新的 ID

您有以下查询:

update ae44
set Price = Case
when ID = 'AT259793380' then '500'
when ID = 'AT271729590' then '600'
when ID = 'AT275981020' then '700'
end case

您的目标是根据以下内容批量更新列表价格对应的ID。但是,查询没有返回预期结果。

解决方案:使用 CASE 进行条件更新

要修复查询,您需要正确使用 CASE 语句。正确的语法如下:

UPDATE  ae44
SET     price =
        CASE
        WHEN ID = 'AT259793380' THEN
                '500'
        WHEN ID = 'AT271729590' THEN
                '600'
        WHEN ID = 'AT275981020' THEN
                '700'
        END

请注意,此查询会将具有其他 ID 的记录的价格更新为 NULL。

替代解决方案:排除空更新

如果您愿意要仅更新列表中的 ID 并排除空更新,您可以使用以下命令查询:

UPDATE  ae44
JOIN    (
        SELECT  'AT259793380' AS oldval, '500' AS newval
        UNION ALL
        SELECT  'AT271729590' AS oldval, '600' AS newval
        UNION ALL
        SELECT  'AT275981020' AS oldval, '700' AS newval
        ) q
ON      ae44.id = q.oldval
SET     price = q.newval

此查询只会更新使用 UNION ALL 语句创建的临时表中指定的 ID 的价格。

以上是如何使用 CASE 批量更新具有条件值的 MySQL 条目?的详细内容。更多信息请关注PHP中文网其他相关文章!

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