Group By , COUNT(*) 和 JOIN

Dra*_*ter 1 mysql sql

运行下面的 SQL 时,任何在 placemarks 表中没有 id 匹配的 placemark_types.id 都不会在结果中返回任何内容。在地标中没有匹配记录的情况下,我试图至少将 type_count 恢复为 0。

因此,如果我的 placemark_types.name 为“警告”,并且地标表中没有“警告”,则我想获取列 | 0 | 'Warning'|

SELECT COUNT( * ) AS type_count, placemark_types.name
FROM  `placemark_types` 
JOIN placemarks ON placemark_types.id = placemarks.type_id
WHERE placemark_types.parent_id =0
GROUP BY placemark_types.id
Run Code Online (Sandbox Code Playgroud)

cee*_*yoz 6

默认情况下,MySQL 执行INNER JOIN,其中仅返回两个表中都有记录的行。

您可以执行LEFT JOINorRIGHT JOIN告诉 MySQL 返回连接的一侧,即使另一侧为空。在这种情况下,您需要一个RIGHT JOIN.