计算groupBy选择后的总记录数

时间:2010-04-23 09:28:58

标签: mysql select count group-by

我有一个具有groupBy的mysql选择查询。 我想在group by语句后计算所有记录。 有没有办法直接从mysql?

感谢。

3 个答案:

答案 0 :(得分:25)

如果您唯一需要的是分组后的计数,并且您不想使用2个单独的查询来查找答案。您可以使用像这样的子查询...

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

注意:您必须在子查询中实际选择一些内容,但您选择的内容无关紧要

注意:所有临时表都必须有一个命名别名,因此末尾的“sq”

答案 1 :(得分:10)

您可以使用FOUND_ROWS()

SELECT <your_complicated_query>;
SELECT FOUND_ROWS();

它真的打算与LIMIT一起使用,告诉你在没有LIMIT的情况下会返回多少行,但它似乎对不使用LIMIT的查询工作正常。

答案 2 :(得分: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