[英]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.