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
的单行。
原文由 Paul 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是一个 groupwise maximum ,是最常见的 SQL 问题之一(因为它看起来应该很容易,但实际上并非如此)。
我经常为 null-self-join 感到高兴:
“获取表中没有匹配 col1,col2 的其他行具有更高 col3 的行。” (如果不止一行具有相同的 col1、col2、col3,您会注意到这一点以及大多数其他分组最大解决方案将返回多行。如果这是一个问题,您可能需要一些后处理。)