具有多个Where子句的SQL

时间:2013-02-23 02:09:51

标签: mysql sql having-clause

首先 - 我已经阅读了大约7页的帖子,这些帖子具有相似的标题,但无法找到适合我的挑战的正确见解

我的SQL:

SELECT name, address, lat, lng, city, state, phone, zip, info
    , ( 3959 * acos( cos( radians('37.4969') ) * cos( radians( lat ) ) * cos( radians( lng ) - radians('-122.2674') ) + sin( radians('37.4969') ) * sin( radians( lat ) ) ) ) AS distance 
FROM myhealthfinder_map 
HAVING distance < '50'  and location = '2'  
ORDER BY distance LIMIT 0 , 10

我收到错误消息:无效查询:'having clause'

中的未知列'location'

如果不是HAVING我只是把它变成WHERE location ='2'然后它工作正常[它找到了列](但我需要距离选择器)。

关于如何打倒这个的任何建议?

2 个答案:

答案 0 :(得分:2)

同时使用WHERE和HAVING。 HAVING用于聚合和计算列。在普通的旧列上WHERE

SELECT name, address, lat, lng, city, state, phone, zip, info
    , ( 3959 * acos( cos( radians('37.4969') ) * cos( radians( lat ) ) * cos( radians( lng ) - radians('-122.2674') ) + sin( radians('37.4969') ) * sin( radians( lat ) ) ) ) AS distance 
FROM myhealthfinder_map 
WHERE location = '2' 
HAVING distance < '50'  
ORDER BY distance LIMIT 0 , 10

此处有更多解释WHERE vs HAVING

答案 1 :(得分:0)

请勿在{{1​​}}之后使用HAVING。你可以试试这个

GROUP BY

它不漂亮,但它应该有用。