#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() = ...
» только потому, что считаю, что так удобнее читать; любой из них сработает.)