我有一个PostgreSQL查询,如下所示:
SELECT *,
2 * 3961 * asin(sqrt((sin(radians((latitude - 40.2817993164062) / 2))) ^ 2 + cos(radians(40.2817993164062)) * cos(radians(latitude)) * (sin(radians((longitude - -111.720901489258) / 2))) ^ 2)) as distance,
(SELECT json_agg(deals.*) FROM deals WHERE vendors.id = deals.vendorid) as deals FROM vendors
WHERE ( category = 'Food' )
AND (distance < 80)
AND (nationwide IS FALSE OR nationwide is NULL)
ORDER BY featured ASC, created DESC, distance ASC
我使用第二个选择部分以英里为单位。
问题是说AND (distance < 80)
的部分我收到以下错误:column "distance" does not exist
奇怪的是,如果我移除AND (distance < 80)
它的工作方式,它也可以按距离正确排序,输出的数据也包括距离,所以它正确地抓住距离,但由于某种原因,我不会让距离作为WHERE
条款中的过滤器,我无法弄清楚原因。
答案 0 :(得分:1)
距离只是一个别名。你可以尝试类似的东西:
num