2
我的SQL查询工作正常,直到我尝试添加一个“WHERE距离< 10”和“块-的算AS距离” 4日和10日线分别。任何想法如何解决它?谢谢!问题与这个MySQL查询:(使用WHERE与AS子句)
Unknown column 'distance' in 'where clause'
SELECT SQL_CALC_FOUND_ROWS places.*, category.*,
COUNT(places_reviews.place_id) AS num_reviews,
(places_popularity.rating_1 + 2*places_popularity.rating_2 + 3*places_popularity.rating_3 + 4*places_popularity.rating_4 + 5*places_popularity.rating_5)/(places_popularity.rating_1 + places_popularity.rating_2 + places_popularity.rating_3 + places_popularity.rating_4 + places_popularity.rating_5) AS average_rating,
6371 * acos(cos(radians(places.lat)) * cos(radians(1.29315)) * cos(radians(103.827164) - radians(places.lng)) + sin(radians(places.lat)) * sin(radians(1.29315))) AS distance
FROM (places)
JOIN category
ON places.category_id = category.category_id
LEFT JOIN places_reviews ON places_reviews.place_id = places.id
LEFT JOIN places_popularity ON places_popularity.place_id = places.id
WHERE `places`.`category_id` = 1 AND `distance` < 5 AND places.name LIKE '%%' GROUP
BY places.id
ORDER BY id desc
LIMIT 5
公式是很长的,有没有什么办法来缩短它像使用AS子句? – Nyxynyx 2011-05-18 23:48:48
@Nyxynyx - 我刚刚更新了我的文章,以反映如何做到这一点。但请注意,您将需要评估查询执行计划以找出每种方法的性能优势/缺点。 – IAmTimCorey 2011-05-18 23:53:31
你是否知道在WHERE子句中包含公式会导致公式计算任何东西?只是想知道 – Nyxynyx 2011-05-18 23:53:58