В операторе 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