このクエリで使用されるベースの郵便番号は、90210 の緯度/経度であり、平均年齢 (2008 年) は 40 万ドルを超えています。BETWEEN の範囲が 100000 から 200000 であるため、この出力に表示されるとは思いません。
SELECT
zip, city, state, avg_agi,
( 3959
* acos(
cos( radians(34.088808) )
* cos( radians( lat ) )
* cos( radians( lng ) - radians(-118.40612) )
+ sin( radians(34.088808) )
* sin( radians( lat ) )
)
) AS distance
FROM
zip_codes, avgagi
where
zip=zipcode
and avg_agi BETWEEN 100000 and 200000
HAVING
distance < 5 ORDER BY distance LIMIT 0 , 10000;
+-------+----------------+-------+---------+------------------+
| zip | city | state | avg_agi | distance |
+-------+----------------+-------+---------+------------------+
| 90069 | West Hollywood | CA | 121753 | 1.42816585190112 |
| 90211 | Beverly Hills | CA | 164538 | 2.06804933097035 |
| 90024 | Los Angeles | CA | 187134 | 2.47751318825072 |
| 90025 | Los Angeles | CA | 130983 | 3.76591348160737 |
| 91604 | Studio City | CA | 103328 | 3.8634176735557 |
| 90064 | Los Angeles | CA | 130769 | 3.95933331921038 |
| 90068 | Los Angeles | CA | 100370 | 4.52908379278674 |
+-------+----------------+-------+---------+------------------+
ただし、私のアプリケーションでは、出力にベースの郵便番号を含める必要があります。zip="90210" に OR を指定して WHERE を使用することが提案されましたが、その方法を理解するのに非常に苦労しています。私がその提案を取り入れようとすると、それは最も長い間スピンし、二度と戻ってこない.
上記の MySQL クエリを変更して、BETWEEN の範囲に関係なく、郵便番号 90210 を含めるにはどうすればよいですか。ありがとう!