开发者社区> 问答> 正文

MySQL中的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,以获得col3每(col1, col2)对最高的一行。

展开
收起
保持可爱mmm 2020-05-08 10:20:58 534 0
1 条回答
写回答
取消 提交回答
  • 我想要每对(col1,col2)对具有最高col3的行。

    这是一个按组的最大值,是最常提出的SQL问题之一(因为它看起来应该很容易,但实际上并非如此)。

    我经常为null-self-join充实:

    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,则大多数其他按组最大的解决方案将返回多行。如果这是一个问题,则可能需要一些后处理。)

    2020-05-08 10:21:06
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像