使用下面的查询,我可以搜索给定半径内的属性并返回结果。
SELECT id, address, ( 3959 * acos( cos( radians( 53.184815 ) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-3.025741) ) + sin( radians(53.184815) ) * sin( radians( lat ) ) ) ) AS distance
FROM properties
WHERE area = 1 HAVING distance <= 1
ORDER BY price DESC, distance ASC
LIMIT 0, 10
但是我现在想添加分页,因此“LIMIT 0, 10”但不知何故让查询返回总结果。例如,如果有 100 个结果,但我们只限制前 10 个结果,则返回总数为 100。
我尝试在选择后添加“COUNT(*) AS Total”,但这导致返回零结果。
如何让查询以这种方式返回总计?
最佳答案
我认为它需要一个子查询来实现这一点:
SELECT
id, address, ( 3959 * acos( cos( radians( 53.184815 ) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-3.025741) ) + sin( radians(53.184815) ) * sin( radians( lat ) ) ) ) AS distance,
(SELECT count(*) FROM properties WHERE area = 1 HAVING ( 3959 * acos( cos( radians( 53.184815 ) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-3.025741) ) + sin( radians(53.184815) ) * sin( radians( lat ) ) ) )<= 1) AS total
FROM properties
WHERE area = 1 HAVING distance <= 1
ORDER BY price DESC, distance ASC
LIMIT 0, 10
关于MySQL - 当指定 HAVING 时使用 COUNT() 返回总结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38477547/