在SELECT
聲明中,我對當前行執行計算並將其存儲在一個列中,我給出了一個別名。 MySQL 5.5.4不允許引用here所述的列別名。有沒有辦法在SELECT語句中存儲變量?
有沒有辦法達到如下所示的理想代碼?我想避免一遍又一遍地做同樣的計算。我認爲將計算的初始結果存儲到一個變量(每行唯一)並引用該變量最有意義。該工程
代碼:
SELECT
DATEDIFF(CURDATE(), example_table.date_start) AS daysElapsed
FROM
example_table
WHERE
DATEDIFF(CURDATE(), example_table.date_start) > 30
AND
DATEDIFF(CURDATE(), example_table.date_start) < 60
;
理想代碼:(不工作,因爲你不能引用列alais)
SELECT
DATEDIFF(CURDATE(), example_table.date_start) AS daysElapsed
FROM
example_table
WHERE
daysElapsed > 30
AND
daysElapsed < 60
;
我已經在這個簡單的問題例。我的實際代碼有一個更大的計算,它被多次調用,可能使這個優化值得。
HAVING沒有GROUP BY作爲WHERE,但它看到別名。 – Mihai
@Mihai我不明白你剛寫了什麼。你可以請擴展它嗎? – Lemmings19
替換在哪裏。 – Mihai