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/52785895/

相关文章:

通过终端连接 MySQL 失败

php - 选择阿拉伯字符会导致 MYSQL 中出现问号。怎么修?

mysql - 如何使用 Node js 将 mysql 结果传递给对象?

mysql - 更正表中一对多、多对多的关系错误

sql - SELECT 查询应返回 Postgresql 中 OR 条件之一的记录

c++ - 在 C++ 中格式化 SQL 查询

mysql - 获取两列的每个唯一组合及其最大值和最小值的整个数据集

mysql - 在 MySQL 中查找值位于哪两个数字之间

sql - 我如何从 Hiveql 中的 select over 语句中仅提取最近一周?

mysql - 检索每组中的最后一条记录 - MySQL