左连接只返回一条记录

Left Join Returning Only One Record

我想加入两个 table。一个是 'users',另一个是 'reviews'。 我想要实现的是所有用户的平均评分和总评分 table。 当评论 table 获得所有用户的评分时,我得到了想要的结果。 但是当评论 table 为空时,我只从用户 table 那里得到一条记录。当前用户 table 中有 3 个用户,但查询仅显示一条记录。

即使评论中没有用户记录,我也想获得所有用户table。 这是我正在使用的查询

SELECT u.id, u.name, u.photo, COUNT(r.rating) AS totalratings,
                                ( SELECT ROUND (AVG(r.rating),0)
                                FROM reviews r
                                WHERE r.fk_receiver_id = u.id) AS avg_rating 
                                FROM
                                users u LEFT JOIN reviews r
                                ON r.fk_receiver_id = u.id 
                                WHERE u.role=2
                                GROUP BY r.fk_receiver_id

您按错误的列分组;当它为 null 时(这将是因为左连接),分组将不会按您想要的方式运行。您的查询看起来像:

SELECT
  u.id,
  max(u.name) as name,
  max(u.photo) as photo,
  COUNT(r.rating) AS totalratings,
  ROUND(AVG(r.rating), 0) AS avg_rating
FROM users u
LEFT JOIN reviews r ON r.fk_receiver_id = u.id
WHERE u.role = 2
GROUP BY u.id

请参阅 DB Fiddle 中的 运行 示例。