2010-03-05 22 views
2

我想要做以下查詢:MySQL查詢。不能在別名...替代嗎?

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

很顯然,這是行不通的,因爲你不能對列「別名」 WHERE條款......任何人都可以用另一種幫助?

getDistance()是一個自定義程序...這將返回2組座標之間的距離。 (這是一個執行http://en.wikipedia.org/wiki/Great-circle_distance)...

非常感謝。

回答

2
SELECT * 
FROM (
     SELECT getDistance(lat1, lng1, lat2, lng2) as `distance`, `forename`, `surname`, `etc..` 
     ) q 
WHERE `distance` < 10 
ORDER BY 
     `distance` ASC 
+0

我不知道這句法將與甲骨文合作SQL Server 2005 ...我可以想到一些有用的地方 – CheeseConQueso 2010-03-07 15:03:02

1

你能做到這一點,它althought大概要取決於有多少動作在getDistance的子發生緩慢的東西了......

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