首页 > 解决方案 > Mysql计算相同的值并按最大值分组

问题描述

我编写了一个报告系统,因此用户可以通过选择一些特定的原因来报告任何内容。我有报告表,其中一个名为“原因”的列是枚举。

我正在尝试根据表格中数字最高的列(原因)内容在审核页面上列出报告的帖子。

报告表: 报告

“违规”是2。其他都是单身。所以在帖子的顶部应该写“暴力”。

帖子表: 帖子

我尝试什么:

SELECT * FROM reports r
INNER JOIN posts p
ON r.contentid=p.id
WHERE r.type=:type
AND (SELECT reason, count(*)
AS NUM FROM reports
GROUP BY reason)
GROUP BY p.id

我在审核页面上没有任何数据,请帮助。

标签: mysql

解决方案


GROUPING 应该有所有不在 GROUP BY 中的列应该在一个聚合函数中

但我认为你只想要 ORDER BY i9n 而不是 GROUP BY

SELECT r.*,p.*,NUM 
FROM reports r
INNER JOIN posts p
ON r.contentid=p.id
INNER JOIN (SELECT reason, count(*) 
AS NUM FROM reports
GROUP BY reason) t1
ON t1.reason = r.reason
WHERE r.type=:type 
ORDER BY NUM DESC
LIMIT 10

推荐阅读