2010-04-23 82 views
15

我有一個mysql選擇查詢有一個groupBy。 我想計算group by statement後的所有記錄。 有沒有直接從MySQL的方式?計數groupBy後的總記錄

謝謝。

+0

你會發布查詢嗎? – Karthik 2010-04-23 09:31:24

+0

到目前爲止您嘗試過什麼? – Salil 2010-04-23 09:32:28

回答

10

您可以使用FOUND_ROWS()

SELECT <your_complicated_query>; 
SELECT FOUND_ROWS(); 

它的目的是與LIMIT一起使用,告訴你在沒有LIMIT的情況下會返回多少行,但對於不使用LIMI的查詢似乎工作得很好T.

+2

不要忘記'SELECT'後的'SQL_CALC_FOUND_ROWS'。 – sectus 2015-08-18 08:55:23

2

看到這個查詢例子:

此查詢用於查找酒店的空房記錄,只需檢查這個

SELECT a.type_id, a.type_name, a.no_of_rooms, 
     (SELECT SUM(booked_rooms) FROM reservation 
     WHERE room_type = a.type_id 
     AND start_date >= '2010-04-12' 
     AND end_date <= '2010-04-15') AS booked_rooms, 
     (a.no_of_rooms - (SELECT SUM(booked_rooms) 
        FROM reservation 
       WHERE room_type = a.type_id 
       AND start_date >= '2010-04-12' 
       AND end_date <= '2010-04-15')) AS freerooms 
FROM room_type AS a 
LEFT JOIN reservation AS b 
ON a.type_id = b.room_type 
GROUP BY a.type_id ORDER BY a.type_id 
24

如果您唯一需要的是分組後的計數,並且您不想使用2個單獨的查詢來查找答案。你可以像這樣子查詢做到這一點...

select count(*) as `count` 
from (
    select 0 as `doesn't matter` 
    from `your_table` yt 
    group by yt.groupfield 
) sq 

注意:你有實際選擇的子查詢的東西,但你選擇什麼都無所謂

注:所有的臨時表必須有一個命名別名,因此「sq」在末尾