首页 > 解决方案 > 如何在一个查询SQL中更新一列中的多行

问题描述

我有一张包含以下客户订单数据的表格。我正在尝试清理显示客户所处状态的一列。该列混合了完整的州名称及其缩写,我只想拥有缩写。以下是我想出的要点,但我不确定出了什么问题。我基本上必须为每个州都这样做。

UPDATE customer_orders 
SET state = CASE 
   WHEN 'Colorado' THEN 'CO'
   WHEN 'Wisconsin' THEN 'WI'
END 
WHERE state IN ('Colorado', 'Wisconsin');

标签: sql

解决方案


VALUES您可以使用状态名称和代码加入表构造函数。

像这样:

UPDATE c
SET state = s.code
FROM customer_orders AS c
JOIN (VALUES
    ('CO','Colorado),
    ('WI','Wisconsin'),
    -- .....etc
) AS s(code,name) ON s.name = c.state;

推荐阅读