Рекомендации по потоку управления MySQL (CASE/THEN)

У меня очень своеобразная проблема на руках. У меня есть проект, в котором предыдущий инженер базы данных не подумал о дизайне базы данных, и теперь я застрял на нем. Мой вопрос прост:

У меня есть два разных запроса на выбор, и один из них должен выполняться, если поле установлено или нет, т.е.

если поле1 равно 0 -> выполнить запрос 1, если поле1 равно 1 -> выполнить запрос 2

Пока я добрался сюда:

SELECT should_i_care
FROM 
    product_sample
WHERE
    pid='XXX'
CASE should_i_care
    WHEN '1' then call query2
    WHEN '0' then call query1

Но обнаружил, что я не могу объявлять запросы, которые хочу запустить. Какие-либо предложения?


person Anonymous    schedule 05.09.2012    source источник
comment
это не может быть оператором, это должен быть сценарий или процедура. Вам нужно будет использовать оператор if.   -  person Jeremy Holovacs    schedule 05.09.2012


Ответы (1)


Это должен быть скрипт или хранимая процедура, подобная этой

DECLARE  shouldICare INT; 

SELECT @shouldICare := should_i_care
FROM 
    product_sample
WHERE
    pid='XXX';

IF @shouldICare = 1 THEN
   Call query2;
ELSE
   Call query1;
END IF;
person hgulyan    schedule 05.09.2012
comment
В долгосрочной перспективе изменение дизайна таблицы — лучший выбор, но спасибо за это изящное решение. - person Anonymous; 05.09.2012