Можно ли упростить:
SELECT GREATEST(a,b) FROM my_table WHERE GREATEST(a,b) > 25
до чего-то вроде:
SELECT GREATEST(a,b) AS max_a_b FROM my_table WHERE max_a_b > 25
Эта попытка возвращает:
Unknown column 'max_a_b' in 'where clause'
SELECT GREATEST(a,b) AS max_a_b FROM my_table HAVING max_a_b > 25
На том уровне, на котором ваш псевдоним не существует, пока он существует, если вы используете пункт.
SELECT max_a_b FROM (SELECT GREATEST(a,b) AS max_a_b FROM my_table) WHERE max_a_b > 25
Это должно работать, но сомнительно, упрощает ли это запрос.Повторять GREATEST(a,b) в предложении WHERE хорошо, имхо.
GREATEST(a,b)
WHERE
MySQL не запускает GREATEST(a,b) дважды, сколько стоит.
Утверждение все еще просто. А когда ваш вопрос касается оптимизации, это лучше сделать СУБД, чем вам.