Проблема с условным синтаксисом MySQL

#mysql

#mysql

Вопрос:

По сути, я хотел бы определить значение на основе условного, а затем использовать это значение внутри другого условного все в том же операторе select.

Пример:

 IF(IF (`date1` IS NOT NULL AND `date1 ` <> 0), 
`date1`, `date2` AS processdate) = curdate(), "ready", "not ready" AS action_status
 

Чтобы определить processdate , что я говорю, проверьте, что в поле date1 есть дата, если это так, используйте его, в противном случае используйте date2 как processdate .

После processdate определения сравните его с сегодняшней датой, если они равны set action_status = «готово», в противном случае «не готово».

Я считаю, что синтаксис неверен, каков правильный формат для чего-то подобного?

Ответ №1:

AS может применяться только ко всему выражению для возвращаемого значения выбора; вы не можете встроить его в выражение. И каждый IF нуждается в круглых скобках вокруг своих трех аргументов. Итак:

 IF(
    curdate() =
        IF(
            `date1` IS NOT NULL AND `date1 ` <> 0, 
            `date1`,
            `date2`
        ),
    "ready",
    "not ready"
) AS action_status
 

(Я изменил ... = curdate() на «быть curdate() = ... » только потому, что считаю, что так удобнее читать; любой из них сработает.)