MySQL 中的 ROW_NUMBER()

2023-04-02数据库问题
13

本文介绍了MySQL 中的 ROW_NUMBER()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

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

Is there a nice way in MySQL to replicate the SQL Server function ROW_NUMBER()?

例如:

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

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

Then I could, for example, add a condition to limit intRow to 1 to get a single row with the highest col3 for each (col1, col2) pair.

推荐答案

我想要每个 (col1, col2) 对具有单个最高 col3 的行.

I want the row with the single highest col3 for each (col1, col2) pair.

这是一个分组最大值,其中之一最常见的 SQL 问题(因为它看起来应该很简单,但实际上并不简单).

That's a groupwise maximum, one of the most commonly-asked SQL questions (since it seems like it should be easy, but actually it kind of isn't).

我经常喜欢空自连接:

SELECT t0.col3
FROM table AS t0
LEFT JOIN table AS t1 ON t0.col1=t1.col1 AND t0.col2=t1.col2 AND t1.col3>t0.col3
WHERE t1.col1 IS NULL;

获取表中没有匹配 col1,col2 的其他行具有更高 col3 的行."(您会注意到这一点,如果不止一行具有相同的 col1、col2、col3,大多数其他分组最大解决方案将返回多行.如果这是一个问题,您可能需要进行一些后处理.)

"Get the rows in the table for which no other row with matching col1,col2 has a higher col3." (You will notice this and most other groupwise-maximum solutions will return multiple rows if more than one row has the same col1,col2,col3. If that's a problem you may need some post-processing.)

这篇关于MySQL 中的 ROW_NUMBER()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

Mysql目录里的ibtmp1文件过大造成磁盘占满的解决办法
ibtmp1是非压缩的innodb临时表的独立表空间,通过innodb_temp_data_file_path参数指定文件的路径,文件名和大小,默认配置为ibtmp1:12M:autoextend,也就是说在文件系统磁盘足够的情况下,这个文件大小是可以无限增长的。 为了避免ibtmp1文件无止境的暴涨导致...
2025-01-02 数据库问题
151

按天分组的 SQL 查询
SQL query to group by day(按天分组的 SQL 查询)...
2024-04-16 数据库问题
77

SQL 子句“GROUP BY 1"是什么意思?意思是?
What does SQL clause quot;GROUP BY 1quot; mean?(SQL 子句“GROUP BY 1是什么意思?意思是?)...
2024-04-16 数据库问题
62

MySQL groupwise MAX() 返回意外结果
MySQL groupwise MAX() returns unexpected results(MySQL groupwise MAX() 返回意外结果)...
2024-04-16 数据库问题
13

MySQL SELECT 按组最频繁
MySQL SELECT most frequent by group(MySQL SELECT 按组最频繁)...
2024-04-16 数据库问题
16

在 Group By 查询中包含缺失的月份
Include missing months in Group By query(在 Group By 查询中包含缺失的月份)...
2024-04-16 数据库问题
12