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 < 3oracle 多对一时只去前两条数据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语句获取前两条数据的主要内容,如果未能解决你的问题,请参考以下文章
ORACLE SQL语句查询一个字段在另一表字段中有两条或以上 的数据