繁体   English   中英

SUM 在 MYSQL 查询中与 LEFT JOIN 和 GROUP BY 混合

[英]SUM mixed with LEFT JOIN and GROUP BY in MYSQL query

我在涉及 sum、left join 和 group by 的查询时遇到了一些问题

$sql = "
SELECT h.id AS hid
     , SUM(l.likes) AS likes 
  FROM homes h
  LEFT 
  JOIN likes l
    ON l.homeid = h.id
 GROUP 
    BY h.id
";

如果没有喜欢,它会给出 NULL 或数字 8873,如果它有一个,它会给出 NULL ,而不是对每个家庭的喜欢求和。 实在看不懂8873。

值得注意的是,在此表中还有很多其他事物的赞,在这种情况下,l.homeid 的值为 NULL。 会不会是丢东西?

编辑:

我为来自不同用户的 homeid 添加了另一个赞,现在它给我 8906 而不是 8873 给那些有 1 个赞的人和 17812 给有两个赞的人。 这很奇怪。 所有数字的数据类型都是 int(11)。 我将创建一个全新的表,看看它是否做同样的事情。 我还将删除我最近添加的唯一索引。

尝试将聚合移动到派生表中并加入然后加入:

SELECT
    h.id                   AS hid
  , COALESCE( l.likes, 0 ) AS likes
FROM homes h
LEFT JOIN (
        SELECT
            homeid
          , COUNT( likes ) AS likes
        FROM likes
        GROUP BY
            homeid
    ) AS l ON h.id = l.homeid

也尝试COUNT()而不是SUM()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM