我有一个查询,其中我有一个复杂的日期表达式作为列之一。
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 子句中重新计算,但这似乎很愚蠢。为什么数据库要计算该日期两次?或者,优化器会存储该值吗?