2013-06-27 3 views
2

У меня есть следующий запрос, и мне нужно запускать его много раз с разными именами. Но как я могу сделать функцию всех запросов, так что мне нужно только запустить эту функцию вместо все запросы поодиночке.Как выполнить функцию SQL-запросов

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% 

Благодаря

ответ

1

Вам нужна таблица отображения для просмотра сделайте при указании типа (или наоборот).

Make  Type 
Ford  Explorer 
Chevrolet Lumina 
Ford  Crown 
Subaru  Legacy 

Затем, когда вы называете функции GetMake (типа), он делает запрос, используя тип в запросе, возвращает Make, а затем вы можете использовать результаты в запросе выше.

1

В качестве альтернативы вы можете просто сделать ...

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

Это будет сделать обновление на каждой записи, хотя несовпадающих записей должно быть неизменным. Если вы только обновляете подмножество записей, вы можете добавить предложение WHERE, чтобы соответствовать только этим типам.