用多个值更新一列的值

svujldwt  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(313)

有一个表,该表有一个名为country的列,我需要在一个查询中更改该列的值,而不是在多个查询中。
在这个查询中,我将埃及的任何值都更改为1

UPDATE subscribers
SET country = 1 WHERE country = 'Egypt';

在这个查询中,我将卡塔尔的任何值都更改为2

UPDATE subscribers
SET country = 2 WHERE country = 'Qatar';

把这两个问题结合起来有什么帮助吗?

jv2fixgn

jv2fixgn1#

你可以使用 case mysql中的表达式:

UPDATE subscribers
    SET country = (CASE WHEN country = 'Egypt' THEN 1 ELSE 2 END)
    WHERE country IN ('Egypt', 'Qatar');

但是,我建议使用派生表:

UPDATE subscribers s JOIN
       (SELECT 'Egypt' as country, '1' as new_country UNION ALL
        SELECT 'Qatar' as country, '2' as new_country 
       ) x
       USING (country)  
    SET s.country = x.new_country;
hmtdttj4

hmtdttj42#

考虑:

UPDATE subscribers SET country =  
CASE
  WHEN country = "Egypt" THEN 1
  WHEN country = "Qatar" THEN 2
  ELSE country 
END
;

现在想象一下为更多的国家做这个表达。而是连接到一个“Map”数据关联的表(国家名称的主表)。连接countryname字段并用“mapping”表中的id更新目标表countryname字段。转换为数字类型字段。或者安全起见,更新到另一个字段,当一切正常时,删除原来的字段。

相关问题