我想进行以下查询:
SELECT getDistance(lat1, lng1, lat2, lng2) as `distance`, `forename`, `surname`, `etc..`
WHERE `distance` < 10
ORDER BY `distance` ASC
显然它不起作用,因为你不能在列'别名'上做WHERE
条款......任何人都可以帮助替代吗?
getDistance()
是一个自定义程序...它返回两组坐标之间的距离。 (这是http://en.wikipedia.org/wiki/Great-circle_distance)的实现......
非常感谢。
答案 0 :(得分:2)
SELECT *
FROM (
SELECT getDistance(lat1, lng1, lat2, lng2) as `distance`, `forename`, `surname`, `etc..`
) q
WHERE `distance` < 10
ORDER BY
`distance` ASC
答案 1 :(得分:1)
你可以做到这一点,虽然它可能会减慢一些东西取决于getDistance子中发生了多少动作......
SELECT getDistance(lat1, lng1, lat2, lng2) as `distance`, `forename`, `surname`, `etc..`
WHERE getDistance(lat1, lng1, lat2, lng2) < 10
ORDER BY `distance` ASC