mysql - SQL - 使用 Count() Group By 显示所有空行

标签 mysql sql database

这些是我的表格:

Categories table
================
id (fk)
category_name


Items table
===========
id (pk)
item_name
category_id (pk)

一个类别有很多项目

一个项目有一个类别

假设我有这些数据:

Categories
==========
id       category_name
-----------------------
1        Foods
2        Beverages
3        Computer
4        Cats


Items
=====
id    item_name   category_id(fk)
1     Rice        1
2     Chicken     1
3     Mouse       3
4     Keyboard    3

我用来计算按类别名称分组的项目的查询:

SELECT
    categories.id,
    categories.category_name,
    COUNT(items.item_name) AS items
FROM
    items
INNER JOIN categories ON items.category_id = categories.id
GROUP BY
    category_name

我已尝试使用上述查询来显示计数,但它并未显示类别表中的所有行。好吧,当然有些项目可能不在类别中,但我如何显示空类别?

最佳答案

你能试试这个吗?

SELECT
    categories.id,
    categories.category_name,
    COUNT(items.item_name) AS items
FROM
    categories LEFT JOIN items
        ON items.category_id = categories.id
GROUP BY
    categories.id, category_name

仅打印空类别

SELECT
    categories.id,
    categories.category_name
FROM
    categories LEFT JOIN items
        ON items.category_id = categories.id
WHERE items.category_id IS NULL;

关于mysql - SQL - 使用 Count() Group By 显示所有空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20393637/

相关文章:

mysql - 为什么 MariaDBb 允许将文本插入 smallint

sql - 加密SQL Server中列中的数据

MySQL 查询永远执行

database - 迁移 CoreData 中的实体父级

php - 从不同的表和不同的数据库获取数据

mysql - 我如何获取mysql中的下一个数据

sql - 在 Postgresql 上的 SQL 查询中的特定条件下增加列值

javascript - 基于浏览器的JS数据库

mysql - MySQL连接查询问题

php - 如何使用php获取附件中上传的文件名