嗨,我对这个计数查询很难:
SELECT COUNT( * ) AS `total`,
( 3959 * ACOS( COS( RADIANS( 45.77447 ) )
* COS( RADIANS( c.latitude ) )
* COS( RADIANS( c.longitude ) - RADIANS( 4.82785 ) )
+ SIN( RADIANS( 45.77447 ) )
* SIN( RADIANS( c.latitude ) ) ) ) AS distance, `r` . *
FROM `adverts` AS `a`
INNER JOIN `users` AS `u` ON a.user_id = u.user_id
INNER JOIN `location_city` AS `c` ON a.location_id = c.city_id
INNER JOIN `location_region` AS `r` ON c.region_id = r.region_id
HAVING (distance <50)
LIMIT 1
这将返回表格中的广告总数,而不是总查询次数。
非常感谢任何帮助。
答案 0 :(得分:1)
如果您希望广告数量满足distance<50
,其中distance
是计算字段,则您必须执行子查询:
SELECT COUNT(*) as total FROM
(SELECT .. AS distance
...
WHERE distance < 50)
(顺便说一下 - 我认为没有HAVING
的{{1}}是有效的MySQL(但我可能错了)。
答案 1 :(得分:0)
因为我似乎无法在帖子中添加评论(仍然不确定如何)
您可以尝试添加
group by a.id
在LIMIT之前
..然而,更多地阅读您的帖子,您是否正在尝试计算其他数字,例如用户,位置和城市?如果是这样,您可能需要进行子查询。