我有一個查詢,其中有一個複雜的日期表達式作爲其中一列。在where子句中引用複雜表達式值
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子句中進行計算,但這似乎是愚蠢的。爲什麼數據庫要計算兩次這個日期?或者,優化器會存儲該值嗎?
在我而言,我不得不同時使用「在哪裏」,也該「有」。它的工作完美:) – 2017-02-10 10:19:32