首先 - 我已经阅读了大约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'然后它工作正常[它找到了列](但我需要距离选择器)。
关于如何打倒这个的任何建议?
答案 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
它不漂亮,但它应该有用。