用一个查询得到两个查询的结果 - mysql

用一个查询得到两个查询的结果 - mysql

问题描述:

$sql ="select * from user limit 5"; 

有没有什么办法可以得到有限数量的结果,但总结果没有限制。用一个查询得到两个查询的结果 - mysql

基本上我想在一个单一的查询下面的两个查询的结果。

query 1 : select count(*) from user 
query 2 : select * from user LIMIT 5 

是否有可能没有任何子查询?

+0

COUNT()是一个聚合函数。这意味着它合并行。我认为这是不可能的。 – jwueller 2010-12-21 11:20:09

+0

cmon人联合! – Matt 2010-12-21 11:33:02

如何像

select *, 
     (select count(*) from user) TotalUsers 
from user 
LIMIT 5 

或许

select user.*, 
     TotalUsers.TotalCnt 
from user, 
     (select count(*) TotalCnt from user) TotalUsers 
LIMIT 5 
+0

有没有什么办法可以消除这些子查询?这可以在一个单一的查询中完成吗? – Avinash 2010-12-21 11:23:03

+0

不是我所知道的。 – 2010-12-21 11:24:19

select *, '' as total from user limit 5 
UNION 
select *,count(*) as total from user group by id>0 
+0

编辑,像这样 – Matt 2010-12-21 11:26:04

+0

select * from用户限制5 union select count(*)from total 我试过这个,但给错误.....有什么不对吗? – Avinash 2010-12-21 11:26:45

+0

确保它的'union select *,count(*)'不只是'union select count(*)' – Matt 2010-12-21 11:31:39

这是一个常见的问题,并且据我知道,它不过是不可能的..坚持两个查询,速度快,清晰。

单查询不可能的,如果没有加入或联合,但是,你可以尝试像

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子句将返回的总行数