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中有没有一种复制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
的一行.
我希望每对(col1,col2)都有一个最高col3的行.
这是一个groupwise maximum,是最常见的SQL问题之一(因为它看起来应该很简单,但实际上不是).
我经常 Select 空自连接:
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,则大多数其他groupwise maximum解决方案将返回多行.如果这是一个问题,您可能需要进行一些后处理.)