Postgres地理位置点距离

Ale*_*lex 5 sql postgresql

我正在尝试进行查询以确定Postgres数据库中地理定位点之间的距离这是我的查询

SELECT latitude, longitude, SQRT(
POW(69.1 * (latitude - 31.8679), 2) +
POW(69.1 * (-116.6567 - longitude) * COS(latitude / 57.3), 2)) AS distance
FROM locations 
HAVING distance < 25 
ORDER BY distance
Run Code Online (Sandbox Code Playgroud)

但它给了我这个错误

错误:列"距离"不存在第5行:距离<25

如果我删除部分"HAVING distance <25",则查询运行正常

Ale*_*lex 4

好的,我解决了,检查其他问题

SELECT t.* FROM (
SELECT latitude, longitude,SQRT(POW(69.1 * (latitude - 31.8679), 2) +
POW(69.1 * (-116.6567 - longitude) * COS(latitude / 57.3), 2)) AS distance 
FROM Locations) t
WHERE distance < 1
ORDER BY distance 
Run Code Online (Sandbox Code Playgroud)