0
此查詢中使用的基本郵政編碼是90210的lat/lng,其平均agi(2008年)超過40萬美元。我不希望它在這個輸出顯示,因爲範圍之間100000和200000如何指定在此MySQL查詢中包含特定的郵政編碼?
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 |
+-------+----------------+-------+---------+------------------+
高達但是,對於我的應用程序需要它在輸出中包含基本的郵政編碼。有人建議我在郵編=「90210」時使用帶OR的WHERE,但是我很難搞清楚如何完成這項工作。當我嘗試合併這個建議時,它會旋轉最長的時間,永遠不會回來。
如何修改上述MySQL查詢,使其包含90210的郵政編碼,而不管BETWEEN範圍如何。謝謝!
謝謝,WebChemist! 「否則試試這個」工作!而且我也很快,「8排(0.03秒)」。我曾嘗試添加OR(zip = zipcode和zip =「90210」),然後運行它需要14.3秒才能執行。從你的例子中我可以看出爲什麼這可能會更好。當你的MySQL代碼中只有一個需要時,我將它轉換爲zip = zipcode兩次。好樣的! – Edward
如果您使用JOIN .. ON語句,則可以刪除括號,如FROM郵政編碼JOIN avg.agi ON zip = zipcode WHERE zip = 90210或avg_agi BETWEEN 100000 AND 200000 HAVING .... JOIN通常優先於做FROM中的多個表以及WHERE子句中的匹配foiegn /主鍵 – WebChemist