[英]Count query returning unexpected results
我有這個問題:
SELECT
count(*) as count ,
( 3959 * acos(
cos( radians( 37.774929 ) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians( -122.419418 ) )
+ sin( radians( 37.774929 ) ) * sin( radians( lat ) )
) ) AS distance
FROM users
HAVING distance < 150
我以為它會給我半徑150英里的用戶數量。 但相反,它給了我一個用戶總數。 如果lat / lng不同,當有一些用戶時,它會給我零用戶數。
有任何想法如何更改此查詢,以獲得150米半徑范圍內的用戶數?
謝謝!
您想使用WHERE子句
select count(*) as count from users WHERE ( 3959 * acos( cos( radians( 37.774929 ) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians( -122.419418 ) ) + sin( radians( 37.774929 ) ) * sin( radians( lat ) ) ) ) < 150
擴展Dirk的答案......
此外,正如在Dirk的回答中,您不需要在SELECT中進行計算就可以在其他地方使用它。
因此,Dirk的答案計算每個ROW的距離(在連接之后,在聚合之前),然后丟棄任何距離為150或更多的任何一個。 它只會聚合並計算一切。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.