我有表的地方查詢中有兩個相同的子查詢 - 如何使它們成爲1?
place_id | city | country_code | zipcode | lat | lon
現在我想說明的地方A. A地點25英里範圍內的地方已place_id 1.
SELECT *
FROM `places`
WHERE (3959 * acos(cos(radians((SELECT lat FROM places WHERE place_id=1))) * cos(radians(lat)) * cos(radians(lon) - radians((SELECT lon FROM places WHERE place_id=1))) + sin(radians((SELECT lat FROM places WHERE place_id=1))) * sin(radians(lat)))) < 25;
該工程確定,但有兩個同樣的子查詢
SELECT lat FROM places WHERE place_id=1
是否可以優化該查詢不能有兩個相同的子查詢,但讓他們變成1?
如果你想聽到那些「MySQL的從來沒有得到的好東西」的評論:查詢作爲輸出看看「公用表表達式」或CTE,他們在MSSQL和Oracle可供選擇 - 它們是甜 - 甜syntacti c糖。 – 2012-08-03 06:52:39