$sql ="select * from user limit 5";
有沒有什麼辦法可以得到有限數量的結果,但總結果沒有限制。用一個查詢得到兩個查詢的結果 - mysql
基本上我想在一個單一的查詢下面的兩個查詢的結果。
query 1 : select count(*) from user
query 2 : select * from user LIMIT 5
是否有可能沒有任何子查詢?
$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