mysql与oracel实现类似于top的功能
mysql的top用法需要借助limit
limit在mysql中主要用于查询语句中,对查询结果进行分页处理,例如有10000条数据,想要拿到前100条数据,就要使用limit对结果前100条分页处理。
limit的格式
limit的参数有两个,分两种情况:
当只传一个参数时,参数代表的是数据量;当传两个字段时,第一个参数代表起始位置,第二个参数代表数据量。
select * from table_1 order by col limit 10
select * from table_1 order by col limit 5,10
上述按照字段col排序查询表table_1的数据,第一行代表查询表table_1排名前10的数据;第二行代表查询表table_1中排名除前五之外(不包括第五)的10条数据,即排名在6-15名的数据。故limit n)等价于(limit 0,n)。
oracel的top用法需要创建虚列
rownum 是作为一个虚列存在于查询语句中,代表的是行号。
select col1,col2 from (select col1,clol2,rownum rn from table1 where rownum<100) where rn<20
oracel 不能直接进行分页查询或者直接排序的数据,必须先增虚列排序,再进行类似的分页查询。
所以若是需要进行特定排序,需要借助row_number()over ...order by .. 等排序函数增加虚列以达到分页查询的目的。