2

次のクエリがあり、さまざまな名前で何度も実行する必要がありますが、すべてのクエリを 1 つずつ実行するのではなく、その関数のみを実行する必要があるように、すべてのクエリの関数を作成するにはどうすればよいですか。

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%

ありがとう

4

2 に答える 2

1

あるいは、あなたはただすることができます...

UPDATE clean.vehicles
SET make = CASE
                WHEN type ilike '%explorer%'
                    THEN 'Ford'
                WHEN type ilike '%lumina%'
                    'Chevrolet'
                ELSE
                    make
           END

これにより、すべてのレコードが更新されますが、一致しないレコードは変更されません。レコードのサブセットのみを更新する場合は、WHERE 句を追加して、それらのタイプのみに一致させることができます。

于 2013-06-27T18:03:48.853 に答える
1

タイプを指定するときにメイクを検索するためのマッピング テーブルが必要です (またはその逆)。

Make       Type
Ford       Explorer 
Chevrolet  Lumina 
Ford       Crown 
Subaru     Legacy

次に、関数 GetMake(type) を呼び出すと、クエリで Type を使用してクエリが実行され、Make が返されます。その後、上記のクエリで結果を使用できます。

于 2013-06-27T17:54:23.377 に答える