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

时间:2010-12-21 11:16:58

标签: mysql

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

有什么方法可以获得有限数量的结果,但总结果没有限制。

基本上我想在一个查询中得到以下两个查询的结果。

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

是没有任何子查询的可能吗?

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)

如果没有join或union,

单个查询是不可能的,但是,您可以尝试类似

的内容
select sql_calc_found_rows * from user limit 5;
select found_rows();  <-- total from first query