在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