mysql - 如何在mysql中建立排名?

标签 mysql sql

我的数据库有问题。

我有一个如下结构的表:

name    type   data  frequen
name1   type1   d1      10
name2   type1   d2      15
name2   type1   d3      25
name2   type2   d4      02
name3   type2   d5      05
name3   type3   d6      20

我需要通过按降序对频率进行排序来创建每个名称和每种类型的最常见特征的排名。

例子:

name    type   data  frequen  rank

name1   type1   d1      10     1
name2   type1   d2      15     2
name2   type1   d3      25     3
name2   type2   d4      02     1
name3   type2   d5      05     2
name3   type3   d6      20     1

有人知道怎么做吗?我将 mysql 与 phpmyadmin 一起使用。

最佳答案

在 MySQL 中执行此操作的最简单方法是使用变量:

  select t.*,
         (@rn := if(@t = type, @rn + 1,
                    if(@t := type, 1, 1)
                   )
         ) as rank
  from t cross join
       (select @t := '', @rn := 0) params
  order by name, freq;

关于mysql - 如何在mysql中建立排名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40875228/

相关文章:

php - 我不明白为什么我的变量为NULL

php - MySql关系型数据库困惑

mysql - MySQL中不使用prepare语句的表名参数

案例中的 SQL 顺序、DESC 和 ASC 奇怪行为

php - PostgreSQL 查询和 PHP 帮助

用于批量传输的 MySqlDataAdapter 或 MySqlDataReader?

php - 无法在mysql中保存值

sql - 在更新表 A 后触发更新表 A 中的特定列

mysql - 如何在sql查询中获取组的SUM

SQL查询打印从A列开始到B列的值