MySQL查询。不能在别名上做什么...替代?

时间:2010-03-05 16:41:08

标签: mysql

我想进行以下查询:

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)的实现......

非常感谢。

2 个答案:

答案 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