MySQL - 当指定 HAVING 时使用 COUNT() 返回总结果

标签 mysql count having having-clause

使用下面的查询,我可以搜索给定半径内的属性并返回结果。

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/

相关文章:

python - 从数据库模型中向登录用户显示他们自己的信息

mysql - 使用文本更改事件的 vb.net 数据阅读器

mysql - 获取文件名记录

SQL 查找在两个表之间匹配的大多数行

sql - 如何使用 TOP * select 返回记录总数

mysql强制发现的结果顺序与IN子句的顺序匹配

mysql - SQL Server + 通过具有条件进行分组

java - java中MySqlDB中的图像添加水印

sql - 这是为此报告编写 SQL 的最佳方式吗?

sql - 在 QoQ Coldfusion 中使用 HAVING 的两个额外列