用一个查询得到两个查询的结果 - mysql
$sql ="select * from user limit 5";
有没有什么办法可以得到有限数量的结果,但总结果没有限制。用一个查询得到两个查询的结果 - mysql
基本上我想在一个单一的查询下面的两个查询的结果。
query 1 : select count(*) from user
query 2 : select * from user LIMIT 5
是否有可能没有任何子查询?
如何像
select *,
(select count(*) from user) TotalUsers
from user
LIMIT 5
或许
select user.*,
TotalUsers.TotalCnt
from user,
(select count(*) TotalCnt from user) TotalUsers
LIMIT 5
有没有什么办法可以消除这些子查询?这可以在一个单一的查询中完成吗? – Avinash 2010-12-21 11:23:03
不是我所知道的。 – 2010-12-21 11:24:19
select *, '' as total from user limit 5
UNION
select *,count(*) as total from user group by id>0
这是一个常见的问题,并且据我知道,它不过是不可能的..坚持两个查询,速度快,清晰。
单查询不可能的,如果没有加入或联合,但是,你可以尝试像
select sql_calc_found_rows * from user limit 5;
select found_rows(); <-- total from first query
也许有点晚了,但得到的答复可以帮助别人。
它可以告诉MySQL只返回前5个结果,并计算总数,使用SQL_CALC_FOUND_ROWS,为这里解释http://www.arraystudio.com/as-workshop/mysql-get-total-number-of-rows-when-using-limit.html
您发出两个查询,但在第一个你暗示的数据库引擎计算并保留没有LIMIT子句将返回的总行数
COUNT()是一个聚合函数。这意味着它合并行。我认为这是不可能的。 – jwueller 2010-12-21 11:20:09
cmon人联合! – Matt 2010-12-21 11:33:02