У меня есть запрос, где у меня есть сложное выражение даты в качестве одного из столбцов.
SELECT
date_column + INTERVAL( complex_jimmy_jam ) DAY AS complex_date_calculation
FROM table
Я хочу сослаться на этот столбец в предложении where
WHERE complex_date_calculation < NOW()
Но mysql задыхается от этого.
1054: Unknown column 'complex_date_calculation' in 'where clause'
Один из способов сделать это состоит в том, чтобы обернуть его в под-выбор
SELECT * FROM (
SELECT
date_column + INTERVAL( complex_jimmy_jam ) DAY AS complex_date_calculation
FROM table
) AS alias
WHERE complex_date_calculation < NOW()
Это лучший способ?
Я также мог бы повторить вычисления в предложении WHERE, но это кажется глупым. Почему база данных рассчитывает эту дату дважды? Или оптимизатор сохранит это значение?