Вы не можете ссылаться на именованное выражение (distance
) в предложении WHERE
(я не знаю, верно ли это вообще для всех систем баз данных, но это по крайней мере так для MySQL).Вместо этого вы можете использовать HAVING
(см. Опцию C).
Опции:
A.Повторите выражение еще раз в предложении where:
SELECT id, (long_formula) as distance FROM message WHERE (long_formula) <= ...
B.Используйте вложенный запрос:
SELECT * FROM
(SELECT id, (long_formula) AS distance FROM message) inner_query
WHERE distance <= ...
C.Используйте предложение HAVING
(я использовал SQL годами, но не знал о HAVING
, пока не прочитал this ):
SELECT id, (long_formula) as distance FROM message HAVING distance <= ...