在 MySQL 计数查询中显示零计数
在数据库管理领域,计数操作经常用于检索聚合信息。但是,在使用 JOIN 查询时,显示零计数可能很困难,尤其是在存在缺失值或空值时。当尝试计算表中所有行的值,但某些行在连接表中没有匹配的条目时,会出现此问题。
问题:缺少零计数
考虑以下场景:我们有两个表,Employee 和 mailingSubscriptions。 mailingSubscriptions 表包含员工的订阅信息,每个员工都有一个唯一的 EmployeeName。我们想要确定与每位员工关联的订阅数量,包括没有订阅的员工(即显示零计数)。
使用以下查询:
Select COUNT(c.Name) From Employee INNER JOIN mailingSubscriptions as m ON c.Name = m.EmployeeName;
我们只会检索计数在 mailingSubscriptions 表中至少有一项的员工。没有订阅的员工将被排除在结果之外。
解决方案:Left JOIN 和 GROUP BY
要解决此问题并获取所有员工的计数,我们可以使用LEFT JOIN 和 GROUP BY 子句。 LEFT JOIN 可确保 Employee 表中的所有行都包含在结果中,即使 mailingSubscriptions 表中没有匹配的行也是如此。然后,GROUP BY 子句按员工姓名对结果进行分组,使我们能够计算每个员工的订阅数量:
SELECT c.name, count(m.mailid) FROM Employee LEFT JOIN mailingSubscriptions as m ON c.Name = m.EmployeeName GROUP BY c.name;
通过使用此修改后的查询,我们现在检索所有员工的订阅计数,包括那些订阅量为零的人。这使我们能够完整查看员工订阅数据,无论他们的订阅状态如何。
以上是如何在 MySQL JOIN 查询中显示零计数?的详细内容。更多信息请关注PHP中文网其他相关文章!