Как упростить повторяющийся шаблон в запросе SQL? - PullRequest
1 голос
/ 11 августа 2011

Можно ли упростить:

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'

Ответы [ 4 ]

4 голосов
/ 11 августа 2011
SELECT GREATEST(a,b) AS max_a_b 
FROM my_table 
HAVING max_a_b > 25

На том уровне, на котором ваш псевдоним не существует, пока он существует, если вы используете пункт.

3 голосов
/ 11 августа 2011
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 хорошо, имхо.

1 голос
/ 11 августа 2011

MySQL не запускает GREATEST(a,b) дважды, сколько стоит.

0 голосов
/ 11 августа 2011

Утверждение все еще просто. А когда ваш вопрос касается оптимизации, это лучше сделать СУБД, чем вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...