Mysql 使用 CASE 更新具有多个“where”子句的多行

问题描述 投票:0回答:1

我有以下查询并想要优化它。这可能是多达 300 次或更多的数据库访问。

update evtentries
  set ro = '1',
  ediv = 'A'
  where 
  entid = '1234' and ID = '10024'

update evtentries
  set ro = '2',
  ediv = 'B'
  where 
  entid = '5678' and ID = '10024'

我找到了一些有关用例的信息,但不确定如何将其与每个字段上的 2 个字段合并。

update evtentries
  set ro = CASE WHEN entid = '1234' THEN '1'
                WHEN entid = '5678' THEN '2'
                ELSE ro
                END
     , ediv = 'A'  <---- need to update with the case
WHERE entid IN ('1234', '5678') and ID = '10024'

 

如何使用 case 或添加此 case 查询的 ediv 字段部分?

mysql optimization case
1个回答
0
投票

第二列的操作与第一列完全相同。

update evtentries
set ro = CASE entid
        WHEN '1234' THEN '1'
        WHEN '5678' THEN '2'
        ELSE ro
    END,
    ediv = CASE entid
        WHEN '1234' THEN 'A'
        WHEN '5678' THEN 'B'
        ELSE ediv
    END
WHERE entid IN ('1234', '5678') and ID = '10024'
© www.soinside.com 2019 - 2024. All rights reserved.