Mysql 将不同的计数值分组到一行中
Sql fidle 这是我正在使用的查询的一个简化部分,在小提琴上,它按照我所需要的方式工作,它将属于指定用户的每一篇文章的每一篇Mysql 将不同的计数值分组到一行中,mysql,sql,Mysql,Sql,Sql fidle 这是我正在使用的查询的一个简化部分,在小提琴上,它按照我所需要的方式工作,它将属于指定用户的每一篇文章的每一篇idOfPost都计算为相同的,在这种情况下,其中UserId=120 它将结果分组到一行中 但是当我在WAMP中运行这个时,我得到了以下错误\1140,这与sql模式=only_full_group_by不兼容,我认为这是因为我也需要按PostId分组,但是如果我这样做,我会得到多行,当然,因为帖子的id是不同的,但是我想把它放在一行 因此,我的问题是:我是否应该禁
idOfPost
都计算为相同的,在这种情况下,其中UserId=120
它将结果分组到一行中
但是当我在WAMP
中运行这个时,我得到了以下错误\1140,这与sql模式=only_full_group_by
不兼容,我认为这是因为我也需要按PostId
分组,但是如果我这样做,我会得到多行,当然,因为帖子的id是不同的,但是我想把它放在一行
因此,我的问题是:我是否应该禁用sql\u mode=only\u full\u group\u by
,我不确定这会产生什么影响,或者我的表结构有问题,需要更改,可能包括Likes
表中的UserId
,或者我的查询有问题,需要更改
WAMP上的mysql版本5.7.14在子查询中使用
groupby
,在主查询中使用sum()
聚合:
SELECT UserId, sum(totalLikes) AS totalLikes
FROM Users
LEFT JOIN Posts a ON ownerId = UserId
LEFT JOIN (
select idOfPost, count(idOfPost) AS totalLikes
from Likes
group by idOfPost) b ON idOfPost = PostId
WHERE UserId = 120
GROUP BY UserId
SELECT UserId, sum(totalLikes) AS totalLikes
FROM Users
LEFT JOIN Posts a ON ownerId = UserId
LEFT JOIN (
select idOfPost, count(idOfPost) AS totalLikes
from Likes
group by idOfPost) b ON idOfPost = PostId
WHERE UserId = 120
GROUP BY UserId