mysql - MySQL 中的 ROW_NUMBER()

标签 mysql sql greatest-n-per-group rank row-number

MySQL 中有没有一种很好的方法来复制 SQL Server 函数 ROW_NUMBER()

例如:

SELECT 
    col1, col2, 
    ROW_NUMBER() OVER (PARTITION BY col1, col2 ORDER BY col3 DESC) AS intRow
FROM Table1

然后,例如,我可以添加一个条件将 intRow 限制为 1,以获得每个 (col1, col2) 具有最高 col3 的单行) 配对。

最佳答案

MySQL 中没有排名功能。您可以获得的最接近的是使用变量:

SELECT t.*, 
       @rownum := @rownum + 1 AS rank
  FROM YOUR_TABLE t, 
       (SELECT @rownum := 0) r
<小时/>

so how would that work in my case? I'd need two variables, one for each of col1 and col2? Col2 would need resetting somehow when col1 changed..?

是的。如果是 Oracle,您可以使用 LEAD 函数在下一个值处达到峰值。值得庆幸的是,Quassnoi 涵盖了 the logic for what you need to implement in MySQL .

关于mysql - MySQL 中的 ROW_NUMBER(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46433093/

相关文章:

.net - linq 等效 SQL 查询 "not in (select query)"

mysql - 包括限制在 group by 子句中选择前 n 行

mysql - 计算日期时间字段上的总秒数

php - 将 mySQL_pconnect 转换为 mySQLi_connect 时出现问题

Mysql - 如果字段匹配则根据条件进行分组根据其他字段进行选择

sql - 安装 SSMS 2014 时出现需要 DLL 的错误

mysql - 在不借助内联 View 的情况下重构想法?

mysql - 寻找 MySQL 默认昨天日期

mysql - 从组中选择最旧的两条记录

sql - 返回一列不同但按另一列排序的记录