对于表中不存在的 ID 显示 COUNT = 0

per*_*zzo 2 sql

我需要统计一家公司的所有考试,如果该公司不存在于考试表中,则返回 0。

在我的公司表中,我有 3 家公司。这是我的查询:

SELECT c.name, ISNULL(COUNT(e.ID), 0)
FROM Exam e
INNER JOIN Company c ON c.ID = e.COMPANY_ID
GROUP BY c.name
Run Code Online (Sandbox Code Playgroud)

它返回 2 行,但我想显示检查表中没有任何记录的第三家公司。

我怎样才能做到这一点?

fth*_*lla 5

您需要一个 RIGHT 或更常见的 LEFT JOIN:

select
  c.name,
  COUNT(e.COMPANY_ID)
from
  Company c left join Exam e
  ON c.ID = e.COMPANY_ID
group by
  c.name
Run Code Online (Sandbox Code Playgroud)

左连接将返回左表中的所有记录,并且仅返回该表中匹配的Company记录。ExamCount 将计算所有非空值。