Ответ 1
Вы можете использовать HAVING для фильтрации в вычисленном столбце:
SELECT a,b,c,(a*b+c) AS d, n FROM table
HAVING d > n
ORDER by d
Обратите внимание, что вам нужно включить n
в предложение SELECT, чтобы это работало.
Поскольку вы не можете использовать вычисляемый столбец в where-clause в MySQL, как это:
SELECT a,b,c,(a*b+c) AS d FROM table
WHERE d > n
ORDER by d
вы должны использовать
SELECT a,b,c,(a*b+c) AS d FROM table
WHERE (a*b+c) > n
ORDER by d
Является ли вычисление (в этом примере "(a * b + c)" выполняется один раз за строку или два раза? Есть ли способ сделать это быстрее? Мне кажется странным, что можно ЗАКАЗАТЬ на столбе, но не иметь предложение WHERE.
Вы можете использовать HAVING для фильтрации в вычисленном столбце:
SELECT a,b,c,(a*b+c) AS d, n FROM table
HAVING d > n
ORDER by d
Обратите внимание, что вам нужно включить n
в предложение SELECT, чтобы это работало.
Вы можете сделать это:
SELECT a,b,c,d FROM
(SELECT a,b,c,(a*b+c) AS d) AS tmp
WHERE d > n
ORDER BY d
Но я не уверен, какие последствия могут иметь последствия.