oracle sql语句获取前两条数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle sql语句获取前两条数据相关的知识,希望对你有一定的参考价值。

select id,seq from hzds_admin where seq<=(select seq from hzds_admin where id=42) and parid=0 order by seq desc limit 0,2,这个sql是mysql的,我想换成oracle的,好像oracle没有limit 0,2这个的,求大神帮忙改下,谢谢了

参考技术A select * from (select id,seq from hzds_admin where seq<=(select seq from hzds_admin where id=42) and parid=0 order by seq desc) where rownum<3追问

这个rownum到底是什么意思,如果我要做分页的话,这个是怎么来做的

追答

rownum是行号的意思,是oracle的一个隐含列,不过这个不能作为分页,因为rownum每次都是从0开始的,也就是说,你不能用rownum >10,这样的语句,因为这样查出来是空值。
如果要分页,那么你就把rownum这个函数写到语句中并重命名为a,也就是类似
select rownum a,其他字段名 from (select id,seq from hzds_admin where seq0 and a<20
还有一种方式,就是利用row_number over这样的开窗函数进行编号,然后再循环也行。具体的写法,网上太多了,稍微查查就有不少,我就不写了。

追问

其实这个sql我主要是来实现两条数据的位置交换,根据seq字段的排序,就是不知道这个sql语句怎么写,oracle的不是很懂

追答

怎么又变成互换位置了,没看懂啥意思。排序那块是一样的啊,order by没有什么变化的,没看懂你说的互换位置是什么意思,能不能举个例子。

追问

已经解决了

本回答被提问者和网友采纳
参考技术B where rownum < 3

oracle 多对一时只去前两条数据sql

 (select table5.shopareaid,table5.usersid ,table5.username  from   (select sg.shopareaid,u1.usersid,u1.username,row_number() OVER(PARTITION BY sg.shopareaid ORDER BY sg.shopareaid desc) numbers from shops s, shopgroup sg,users u1 where s.shopgroupid = sg.shopgroupid and   u1.companysid=7 and u1.usertitle = 40 and u1.status<=2 and s.shopsid=u1.residentshopid) table5 where table5.numbers=1) table1,

 

.

以上是关于oracle sql语句获取前两条数据的主要内容,如果未能解决你的问题,请参考以下文章

如何查询一个表中,各个分类的前面2条数据,用一条sql语句

ORACLE SQL语句查询一个字段在另一表字段中有两条或以上 的数据

ORACLE SQL语句查询一个字段在另一表字段中有两条或以上 的数据

oracle 多对一时只去前两条数据sql

怎样用Sql语句判断一张表中的两条数据相同

如何获取Oracle数据库中sql语句的执行时间