我需要计算公司的所有考试,如果该公司不在考试表中,则返回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行,但我想展示第三家在考试表中没有任何记录的公司。
我该怎么做?
答案 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将计算所有非空值。