$sql ="select * from user limit 5";
有什么方法可以获得有限数量的结果,但总结果没有限制。
基本上我想在一个查询中得到以下两个查询的结果。
query 1 : select count(*) from user
query 2 : select * from user LIMIT 5
是没有任何子查询的可能吗?
答案 0 :(得分:1)
select *, '' as total from user limit 5
UNION
select *,count(*) as total from user group by id>0
答案 1 :(得分:1)
也许有点晚了,但答案可以帮助其他人。
可以告诉MySql仅返回前5个结果并使用SQL_CALC_FOUND_ROWS计算总数,如此处所述http://www.arraystudio.com/as-workshop/mysql-get-total-number-of-rows-when-using-limit.html
您发出两个查询,但在第一个查询中,您提示数据库引擎计算并保留在没有LIMIT子句的情况下返回的行总数
答案 2 :(得分:0)
像
这样的东西select *,
(select count(*) from user) TotalUsers
from user
LIMIT 5
或者
select user.*,
TotalUsers.TotalCnt
from user,
(select count(*) TotalCnt from user) TotalUsers
LIMIT 5
答案 3 :(得分:0)
这是一个常见的问题,据我所知,这是不可能的。坚持两个查询,它快速而清晰。
答案 4 :(得分:0)
单个查询是不可能的,但是,您可以尝试类似
的内容select sql_calc_found_rows * from user limit 5;
select found_rows(); <-- total from first query