当前位置: 首页 > 面试题库 >

MySQL CASE更新多列

慕容劲
2023-03-14
问题内容

我想使用一个case语句更新表中的多个列,但是我找不到如何执行此操作的方法(甚至有可能)。我提出了以下无效的参考查询:

UPDATE tablename SET
    CASE name
        WHEN 'name1' THEN col1=5,col2=''
        WHEN 'name2' THEN col1=3,col2='whatever'
        ELSE col1=0,col2=''
    END;

有什么方法可以通过有效的SQL达到预期的结果吗?


问题答案:
UPDATE tablename
SET col1 = CASE WHEN name = 'name1' THEN 5 
                WHEN name = 'name2' THEN 3 
                ELSE 0 
           END
 , col2 = CASE WHEN name = 'name1' THEN '' 
               WHEN name = 'name2' THEN 'whatever' 
               ELSE '' 
          END
;


 类似资料:
  • 您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,了解正确的语法....

  • 问题内容: 这种类型的东西之前已经被问过几次了,但并不是我要找的东西。我需要两行等于子查询的不同部分。 我目前正在使用: WHERE语句显然得到了简化……但是基本上它是相同的子查询,但是我不认为我应该运行两次? 我想做类似… 问题答案: 您只需将表加入子查询中即可进行一些计算,

  • 问题内容: 我是python和django rest的新手。但我很困惑。最好的方法是什么 更新django rest框架中的多对多关系。我看了文件 时,以 指定了直通模型的ManyToManyField设置为只读。 如果显式指定一个指向ManyToManyField的关系字段 对于直通模型,请确保将read\u only设置为True。 如果我有密码 这将返回技能作为对象列表。我没有办法更新 他们

  • 问题内容: 我想更新表的所有字段的值为“ PCNAME”。我要更新的表名是XYZ。我只想更新一些字段而不保留一些不变。 这会影响很多行而不是一行,因为会有很多行带有NAME =’PCNAME’。我如何使用JPA做到这一点。我有与此表关联的实体类。 问题答案: 您既可以采用面向对象的方式,也可以使用更新查询。 面向对象: 使用更新查询(未试用): 显然,第二个版本的性能更好。

  • 问题内容: 我需要执行选择,然后以原子方式更新其中的一些行。 我正在使用的代码如下所示(简化): 我可以保证更新将自动执行吗?如果没有,我如何保证? 如果任何其他进程更改了您通过其更新的数据库行,该怎么办?有什么方法可以锁定行? 问题答案: 这里可能有很多技术和概念在起作用,当您开始考虑多线程/多请求应用程序时,事情就会变得相当棘手。 正如Iassevk所说,您应该研究使用事务来确保更新的原子性-

  • 问题内容: 我知道您可以一次插入多行,是否可以在MySQL中一次更新多行(如在一个查询中)? 编辑:例如,我有以下内容 我想将以下所有更新合并到一个查询中 问题答案: 是的,这是可能的-您可以在插入的键更新中使用INSERT…。 使用您的示例: