mysql - 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
我在审核页面上没有任何数据,请帮助。
解决方案
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
推荐阅读
- html - MDN 指南中的简单@font-face 不起作用
- quickfix - c# (Quickfixn) 中不正确的 BeginString (FIX.4.4)
- chart.js - Chart.js 插件数据标签 - 格式化程序 - 在数千之间添加空格
- laravel - Laravel 属于混乱
- asp.net-mvc - 登录后重新访问索引页面
- macos - 上传到苹果后错误:ITMS-90284:无效的代码签名
- java - Java 接口继承自其他两个接口 - 是否可以通过使用 Java 反射删除有关其中一个接口的信息?
- java - 如何在我的 CentOS7 64 位系统上安装 OpenJDK7 32 位(JDK,而不仅仅是 JRE)?
- python - python pydeck to_html不渲染地图
- java - 事务方法不回滚未经检查的异常