我有以下查询,我需要使用不同的名称多次运行它,但是如何创建所有查询的功能,以便我只需要逐个运行该函数而不是所有查询。
update clean.vehicles set make='Ford' where type ilike '%explorer%'
update clean.vehicles set make='Chevrolet' where type ilike '%lumina%'
update clean.vehicles set make='Ford' where type ilike '%crown%'
update clean.vehicles set make='Subaru' where type ilike '%suburu%'
update clean.vehicles set make='Subaru' where type ilike '%legacy%'
update clean.vehicles set make='Infiniti' where type ilike '%infinitie%'
update clean.vehicles set make='Ford' where type ilike '%windstar%'
update clean.vehicles set make='Volkswagen' where type ilike '%vw%'
update clean.vehicles set make='Mitsubishi' where type ilike '%mitsubishi%'
update clean.vehicles set make='Infiniti' where type ilike '%infiniti%'
update clean.vehicles set make='Chevrolet' where type ilike '%chev%'
update clean.vehicles set make='Chrysler' where type ilike '%plymouth%'
update clean.vehicles set make='Chrysler' where type ilike '%plymoth%
由于
答案 0 :(得分:1)
当您指定类型时,您需要一个映射表来查找make(反之亦然)。
Make Type
Ford Explorer
Chevrolet Lumina
Ford Crown
Subaru Legacy
然后,当您调用函数GetMake(type)时,它会使用查询中的Type进行查询,返回Make,然后您可以在上面的查询中使用结果。
答案 1 :(得分:1)
或者你可以做......
UPDATE clean.vehicles
SET make = CASE
WHEN type ilike '%explorer%'
THEN 'Ford'
WHEN type ilike '%lumina%'
'Chevrolet'
ELSE
make
END
这将对每条记录进行更新,但不匹配的记录应保持不变。如果您只是更新记录的子集,那么您可以添加WHERE子句以仅匹配这些类型。