我有两个包含艺术家(艺术家)和国家/地区(国家/地区)的表,我正在尝试连接这两个表,并且我想显示拥有 0 个艺术家的国家/地区(根本不在艺术家表中的国家/地区) 。此查询为我提供了所有艺术家,但在具有 0 个艺术家的国家/地区的行中,它给出的是“1”,而不是“0”。我是否需要在某处指定它应该给出的值,以防它为空?
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。
由于您使用的是 LEFT JOIN,因此当没有匹配的艺术家时,您的查询将返回包含国家/地区名称但 FK_countryID 为 NULL 条目的行。
关于database - 查询对空值给出 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54635466/