我在MYSQL数据库中有两个具有以下属性的表。 服务(ID,姓名,详细信息)。 评级(ID,SID,点)。 在评级表中,sid是服务表的外键。 我想以下列格式显示数据 输出(服务ID,名称,详细信息,平均点数)按平均点数排序。 为此,我使用了以下查询
SELECT s.*, ROUND(COALESCE(AVG(r.points),0)) AS rating
FROM services s, rating r
WHERE s.id=r.sid
ORDER BY rating DESC
以上查询仅在评级表中存在记录时显示结果。我想在评级表中显示两条记录是否存在记录。如果评级表中没有记录,则其平均值将被计为零。 请帮帮我。
答案 0 :(得分:0)
将隐式连接更改为左外连接(将返回null)并将avg包装在ifnull中
SELECT s.*, ifnull(ROUND(COALESCE(AVG(r.points),0)),0) AS rating
FROM services s
left outer join rating r on s.id=r.sid
ORDER BY rating DESC