如何根据第 1 列更新第 2 列,然后根据第 2 列更新第 3 列

How do I update column 2 based on column 1, and then column 3 based on column 2

我正在使用现有的 table,第 2 列和第 3 列中的数据缺失或不正确,因此我需要根据第 1 列更新这些列,然后在第 2 列更新后更新这些列。

第 1 列是车辆 "class"(大型汽车、小型 suv 2wd、皮卡 4wd 等)。 第 2 列应该是基于第 1 列中车辆 class 的 "type_id"(编号 1-6)。 然后第 3 列是基于第 2 列中类型 ID 的车辆 "type"(轿车、皮卡等)。

更新第二列"type_id"我尝试了以下几种变体:

UPDATE mytable
SET type_id = CASE 
WHEN "class" = 'Compact Cars' then '1' ELSE type_id
WHEN "class" = 'Midsize Station Wagons' then '3' ELSE type_id
WHEN "class" = 'Minivan - 2WD' then '2' ELSE type_id
WHEN "class" = 'Minivan - 4WD' then '2' ELSE type_id

以此类推

第 1 列中大约有 30 个不同的变量需要与第 2 列中的 ID 号对应。从那里我需要使用与第 2 列中的编号对应的基本车辆类型更新第 3 列。

感谢任何帮助。

我真的不明白这里迭代逻辑的意义:据我了解你的问题,你可以将类型 ID 和类型关联到每个 class。

table 值在这里可能会派上用场:

update mytable t
set type_id = x.type_id, type = x.type
from (
    values 
        ('Compact Cars', 1, 'sedan'),
        ('Midsize Station Wagons', 3, 'foo'),
        ('Minivan - 2WD', 2, 'pickup'),
        ('Minivan - 4WD', 2, 'pickup'),
)  x(class, type_id, type)
where x.class = t.class

如果您要执行大量转码,将它们全部存储在一个 table 中会更简单,您可以直接加入查询。