我的数据库中有2个表,即Fleets和person_onboard_fleets。我正在尝试获取所有机队的清单(有效),并计算每个机队的人员数量(无效)。但是,如果没有人员在飞机上,则不会显示结果。

SELECT f.*, count(pof.ID) AS onboard
FROM fleets f, personnel_onboard_fleets pof
WHERE f.fleet_ID = pof.fleet_ID ORDER BY f.status


我预计会有2个结果,一个舰队有2人在船上,而一个舰队有0人在船上。但是我只得到一个结果。我尝试使用以下内容

SELECT f.*,  IFNULL(COUNT(pof.ID), 0) AS onboard
FROM fleets f, personnel_onboard_fleets pof
WHERE f.fleet_ID = pof.fleet_ID ORDER BY f.status


我真的看不到查询出了什么问题,是否需要添加其他任何内容来显示载有0人的机队。

计数之前我最初的查询显示所有机队都很好,所以我知道这与计数有关。

这真让我抓狂!任何帮助将非常感激!!

最佳答案

尝试:

SELECT f.fleet_id,
       Count(pof.id) AS onboard
FROM   fleets f
       LEFT JOIN personnel_onboard_fleets pof
              ON f.fleet_id = pof.fleet_id
GROUP  BY f.fleet_id
ORDER  BY f.status;

关于mysql - COUNT个ifnull mysql查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16211064/

10-10 10:45