按出现次数最多的 MySQL 查询顺序

标签 mysql sql select sql-order-by

我有一个 MySQL 表,设置如下:

id  |  game_type | votes  
01  |  aaa       |  2  
02  |  bbb       |  2  
03  |  ccc       |  4  
04  |  aaa       |  7  
05  |  aaa       |  1  
06  |  ccc       |  11  

我想返回所有行,所以它们按游戏类型排序,但游戏类型按降序排列,然后按投票数量降序排列,如下所示:

04 aaa  7  
01 aaa  2  
05 aaa  1  
06 ccc  11  
03 ccc  4  
02 bbb  2

如果我在查询末尾只有 ORDER BY,它只是按随机顺序对它们进行分组。

我怎样才能做到这一点?

最佳答案

试试这个:

SELECT M.id, M.game_type, M.votes 
FROM MyTable AS M INNER JOIN
    (SELECT game_type, COUNT(game_Type) AS TypeCount
     FROM MyTable
     GROUP BY game_type
     ORDER BY COUNT(game_Type) DESC) AS U
  ON M.game_type=U.game_type
ORDER BY U.TypeCount DESC, M.game_type, M.votes DESC

关于按出现次数最多的 MySQL 查询顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11334258/

相关文章:

php - 在PHP中的另一个页面中显示输出结果

php - MySQL 从多个表中删除行

mysql - 在 mysql 中使用 Count 与 AND、OR 或 NOT 条件(带或不带 HAVING)?

mysql - SQL 计算 GROUP BY 中的行数

object - 在 Angular2 中,对象数组的 ng-repeat 选择选项不起作用。它给出的是[Object object]而不是真实的对象

mysql - 如果 MySQL 中给定日期没有 SUM,则添加 0?

Java导入mysql数据库/bin/bash错误

mysql - Node.js 尝试使用 Node.js 插入 SQL 行时抛出错误

php - MySQL创建触发器将内容插入同一数据库中的另一个表中

mysql - MySQL 创建临时表时包含哪些数据?