将单个行中的不同计数值分组

问题描述 投票:1回答:1

Qazxswpoi小提琴。

here

这是我正在使用的查询的简化部分,它在小提琴上完全按照我需要的方式工作,它将每个SELECT UserId,totalLikes FROM Users LEFT JOIN(select ownerId, PostId from Posts) a ON ownerId = UserId LEFT JOIN(select idOfPost, count(idOfPost) AS totalLikes from Likes) b ON idOfPost = PostId WHERE UserId = 120 GROUP BY UserId 计为属于指定用户的每个帖子,在这种情况下idOfPost和它分组结果是一行。

但当我在where UserId = 120运行这个我得到以下错误WAMP女巫我认为是因为我需要分组#1140 this is incompatible with sql_mode=only_full_group_by,但如果我这样做我得到多行,自然因为帖子的ID不同但我想要把它放在一排。

所以我的问题是:我应该禁用PostId女巫我不确定会有什么影响,或者我的表格结构有问题需要更改,可能包括sql_mode=only_full_group_by表格中的UserId,或者我的查询是错误,需要改变?

WAMP上的mysql版本5.7.14

mysql sql
1个回答
1
投票

在子查询中使用Likes,在主查询中使用GROUP BY聚合:

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

© www.soinside.com 2019 - 2024. All rights reserved.