代码之家  ›  专栏  ›  技术社区  ›  Simon

MySQL查询。不能在别名上做何处…可选?

  •  2
  • Simon  · 技术社区  · 14 年前

    我要执行以下查询:

    SELECT getDistance(lat1, lng1, lat2, lng2) as `distance`, `forename`, `surname`, `etc..`
    WHERE `distance` < 10
    ORDER BY `distance` ASC
    

    很明显它不会起作用,因为你做不到 WHERE 列“alias”上的子句…有人能帮忙做其他选择吗??

    getDistance() 是自定义过程…这将返回两组坐标之间的距离(以英里为单位)。(它是 http://en.wikipedia.org/wiki/Great-circle_distance )

    非常感谢。

    2 回复  |  直到 14 年前
        1
  •  2
  •   Quassnoi    14 年前
    SELECT  *
    FROM    (
            SELECT getDistance(lat1, lng1, lat2, lng2) as `distance`, `forename`, `surname`, `etc..`
            ) q
    WHERE   `distance` < 10
    ORDER BY
            `distance` ASC
    
        2
  •  1
  •   CheeseConQueso    14 年前

    你可以这样做,尽管它可能会减慢一些事情,取决于在getDistance子节点中发生了多少操作…

    SELECT getDistance(lat1, lng1, lat2, lng2) as `distance`, `forename`, `surname`, `etc..`
    WHERE getDistance(lat1, lng1, lat2, lng2) < 10
    ORDER BY `distance` ASC