mysql 这个条件更新语句的正确语法是什么

标签 mysql sql sql-update case

MYSQL,我想要的是这样的

update tablename 

case fieldA

when value1 then set fieldX0=xxx,fieldX1=bbb,fieldX2=ccc ...

when value2 then set fieldY0=yyy,fieldY1=eee,fieldY2=fff ...

end

什么是正确且简单的语法?非常感谢。

最佳答案

应该这样写:

UPDATE tablename
SET fieldX = CASE WHEN fieldA = 'value1' THEN 'xxx' ELSE fieldX END,
    fieldY = CASE WHEN fieldA = 'value2' THEN 'yyy' ELSE fieldY END
WHERE fieldA IN ('value1', 'value2'); 

注意:我这样写了ELSE部分,因为ELSE的默认值是NULL如果 CASE 表达式的条件无效,那么这会将其设置为原始值而不是 NULL 值。

关于mysql 这个条件更新语句的正确语法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15740557/

相关文章:

mysql - 使用单选语句在数据库中的所有表中搜索

php - 更新查询只使数据库表字段为空

sql - 在 postgresql 中编辑 jsonb 数组的字段

sql - 如何从 Postgres 表中的 ltree 中删除特定标签?

如果 2 个表中的任何一个满足条件,则 MySQL JOIN

php - 从 mysql 数据库中选择最长的天数?

只知道十年/世纪的 sql 存储日期

PHP 表单验证逻辑有点不对劲

php - 无法在 laravel 的数据库中保存文件名

c# - 如何在插入语句中使用子查询