列の 1 つとして複雑な日付式を持つクエリがあります。
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'
これを行う1つの方法は、サブセレクトでラップすることです
SELECT * FROM (
SELECT
date_column + INTERVAL( complex_jimmy_jam ) DAY AS complex_date_calculation
FROM table
) AS alias
WHERE complex_date_calculation < NOW()
これが最善の方法ですか?
WHERE 句で計算をやり直すこともできますが、それはばかげているようです。データベースがその日付を 2 回計算するのはなぜですか? または、オプティマイザはその値を保存しますか?