首页 > 解决方案 > MySQL 结合两个查询得到两个计数

问题描述

我的表包含每个都有一个类别编号的项目。我有一个很好的查询,现在可以计算它在每个类别中找到的许多项目。如果我在搜索“奶酪”这个词,它看起来像这样

$result=mysql_query("SELECT category, COUNT(*) AS 'itemcount' 
                     FROM mytable 
                     WHERE title like '%cheese%' 
                     GROUP BY category 
                     order by itemcount")

现在我有一个包含“奶酪”的所有类别编号的列表,以及每个类别中有多少个。我还使用第二个查询来计算“奶酪”项目的总数。与其进行第二次查询,有没有办法添加所有项目计数以获得总数......所以只需要一个查询?

`

标签: mysqlselectcountnested-queries

解决方案


WITH ROLLUP您可以在子句中添加一个GROUP BY,这将在表的末尾为您提供一个额外的行(带有NULL类别值),其中包含奶酪项目的总数,例如

$result=mysql_query("SELECT category, COUNT(*) AS 'itemcount' 
                     FROM mytable 
                     WHERE title like '%cheese%' 
                     GROUP BY category WITH ROLLUP 
                     ORDER BY itemcount");

示例输出:

category    itemcount
restaurant          5
hotel               2
shop               11
NULL               18

推荐阅读