遇到MySQL中的查询问题

时间:2014-11-09 07:17:45

标签: mysql

我正在尝试执行此查询:

SELECT *, ( 6371 * acos( cos( radians(43.656906) ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians(-79.434356) ) + sin( radians(43.656906) ) * sin( radians( latitude ) ) ) ) AS distance FROM Locations HAVING distance < 10 AND HAVING category='%Family%'

但是我收到了这个错误:

  

#1064 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以获得正确的语法   靠近'HAVING category ='%Family%'LIMIT 0,30'在第1行

有人知道这是什么问题吗?

3 个答案:

答案 0 :(得分:1)

我希望类别是您表格中的列

   SELECT *, ( 6371 * acos( cos( radians(43.656906) ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians(-79.434356) ) + sin( radians(43.656906) ) * sin( radians( latitude ) ) ) ) AS distance FROM Locations where  category like '%Family%' HAVING distance < 10 

答案 1 :(得分:1)

你不能两次添加条件。你可以使用&#34; AND&#34;在&#34;里面&#34;条件。所以代码将是:

SELECT *, ( 6371 * acos( cos( radians(43.656906) ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians(-79.434356) ) + sin( radians(43.656906) ) * sin( radians( latitude ) ) ) ) AS distance FROM Locations HAVING distance < 10 AND category='%Family%'

答案 2 :(得分:0)

您需要删除第二个HAVING并使用AND告诉MySQL两个条件必须保持。

SELECT *, ( 6371 * acos( cos( radians(43.656906) ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians(-79.434356) ) + sin( radians(43.656906) ) * sin( radians( latitude ) ) ) ) AS distance FROM Locations HAVING distance < 10 AND category='%Family%'