对经常使用Oracle,Mysql数据库的开发者来说,分组和排序是经常的事情,
如果是分组里面取前N条呢,如下处理:
假设表test里面有字段a,b,分组用a字段,排序用b字段,取每组前n条,如下处理
select * from (
SELECT ROW_NUMBER()OVER(PARTITION BY a ORDER BY b) RN,T.* FROM test T) where RN <= n
从使用角度来说oracle的系统函数比mysql好用很多,分组排序如此,父子递归也是如此。

本文介绍在Oracle和Mysql中如何使用SQL进行分组并选取每组前N条记录的方法,通过ROW_NUMBER()函数配合PARTITION BY和ORDER BY实现。对比了Oracle和Mysql在分组排序及父子递归上的功能差异。

876

被折叠的 条评论
为什么被折叠?



