mysql - 如何包含 MySQL COUNT 为 0 的行?

标签 mysql count

我正在使用以下查询返回如下结果:

SELECT  subnets.subnet_id , INET_NTOA(  subnets.address ) AS inet_address, subnet_masks.hosts, COUNT(addresses.STATUS) AS status_count
FROM subnets
LEFT JOIN subnet_masks ON subnets.mask_id = subnet_masks.mask_id
LEFT JOIN addresses ON subnets.subnet_id = addresses.subnet_id
WHERE addresses.status = 'allocated'
GROUP BY subnet_id      
ORDER BY subnets.address



subnet_id   inet_address    hosts   status_count
91          10.10.10.0      65534   3
71          192.168.1.0     254     6
90          192.168.10.0    254     1

但是我希望它也返回计数为 0 的行,就像这样:

subnet_id   inet_address    hosts   status_count
91          10.10.10.0      65534   3
76          172.128.0.0     254     0
71          192.168.1.0     254     6
90          192.168.10.0    254     1

我读到这可能是我的 JOIN 有问题,所以我尝试了很多不同的方法,但得到了相同的结果。有谁知道我做错了什么?

最佳答案

您的 WHERE 子句正在过滤记录...将其移至您的 LEFT JOIN 以解决问题:

SELECT  subnets.subnet_id , INET_NTOA(  subnets.address ) AS inet_address, subnet_masks.hosts, COUNT(addresses.STATUS) AS status_count
FROM subnets
LEFT JOIN subnet_masks ON subnets.mask_id = subnet_masks.mask_id
LEFT JOIN addresses ON subnets.subnet_id = addresses.subnet_id AND addresses.status = 'allocated'
GROUP BY subnet_id      
ORDER BY subnets.address

关于mysql - 如何包含 MySQL COUNT 为 0 的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8838433/

相关文章:

java - JDBC同时连接MySQL和Sybase数据库

php - 分页 php 只有 10 个项目

php - 在带有列名的关联数组中循环

sql - PostgreSQL 检查匹配正则表达式的表数

java - 选择一行时的 JTable 简单代码?

php - Join 函数用于将一个表中的字段值与另一表中的字段值进行匹配

jquery - 我如何使用 jquery 计算 Href

sql - Microsoft SQL 计数问题

mysql - 统计MYSQL中的查询结果

count - 杰基尔+液体: number of posts by month