我有两个表包含艺术家(Artist)和国家(Country),我正在尝试将这两个表连接起来,我想显示有0个艺术家的国家(根本不在艺术家表中的国家)。这个查询提供了所有艺术家,但它给出的不是“0”,而是“1”。我需要在某个地方指定它在它为空时应该给出什么值吗?
SELECT c.country_name AS shteti, COUNT(*) AS count
FROM country c
left outer join artist a
ON c.countryID = a.FK_countryID
GROUP BY c.country_name
so it gives Andorra 1, even though Andorra is not at all in the Artist
table.
"Albania" "5"
"Andorra" "1"
"Argentina" "2"
最佳答案
改为使用COUNT(a.FK_countryID)
。这只计算非空项,而COUNT(*)
计算行,不管列是否为空。COUNT(a.FK_countryID)
将产生该国艺术家的确切数量,包括0。
由于您使用的是左联接,因此当没有匹配的艺术家时,查询将返回一行,该行的国家名称为fk_countryid,但条目为空。