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

时间:2017-02-10 13:08:08

标签: 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

它返回2行,但我想展示第三家在考试表中没有任何记录的公司。

我该怎么做?

1 个答案:

答案 0 :(得分:4)

你需要一个正确的或更常见的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

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