2014-11-09 36 views
0
有查询

我试图做到这一点查询:有问题与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 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'HAVING category='%Family%' LIMIT 0, 30' at line 1

有谁知道是什么问题?

+0

删除第二个'having'过滤 – 2014-11-09 07:18:24

+0

我需要它有它为我的结果笑...... – 2014-11-09 07:19:12

+0

我的意思是删除'having'仅剩下的应该留样'和类别=“%家庭%”' – 2014-11-09 07:20:23

回答

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 
+0

由于它的工作。 – 2014-11-09 07:31:33

+0

接受的答案,然后 – 2014-11-09 07:32:18

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%' 
1

不能添加具有两倍的条件。你可以用“和”“具有” condition.So里面的代码将是:

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%'