问个ORACLE中SQL语句写法,取表第N条记录的问题

请问如何能表中取到rownum为2的记录,有一个关联A表中有3条记录idname1王1李1杨B表需要跟A关联select(selectnamefromawherea.id... 请问如何能表中取到rownum为2的记录,有一个关联A表中有3条记录
id name
1 王
1 李
1 杨

B表需要跟A关联
select
(select name from a where a.id = b.id and rownum=1) as name1,
(select name from a where a.id = b.id and rownum=2) as name2,
(select name from a where a.id = b.id and rownum=3) as name3
from b
where .......

因为只需要B表中的每条记录,因此我想不做全表关联,当我想这样写的时候发现只能取到a中的rownum=1的记录,rownum=2、3的取不出,请问这是什么问题,有没有可以解决的办法,谢谢
展开
 我来答
guoweifyj
2011-09-13 · TA获得超过346个赞
知道小有建树答主
回答量:158
采纳率:100%
帮助的人:170万
展开全部
学MSSQLSERVER正准备学oracle的表示,你A表里的ID是相同的.. where a.id = b.id 表内无聚集索引数据存放可能是堆存放无序的,将有可能取ID相同的时候排序数据取错了数据...你权且把A表ID换下..不让其相同试试.

---或则直接把 where a.id = b.id 去掉试试,反正就只有一列相同ID
追问
请问,我现在直接取A表
select * from a where rownum = 2
这个时候也是没有数据的,难道因为表中的 rownum 无效吗,rownum = 1时可以取出
id name
1 王
怎样才能实现3个条记录显示在3个字段上
追答
你的方法从语法上来说本来就是没错的 每取一条数据列值作为列值显示;我记得Oracle取N条记录确实是用rownum;
你试试:
select * from a where rownum<4看能否把全部数据取出来.
lzf7878
2011-09-13 · TA获得超过186个赞
知道答主
回答量:103
采纳率:0%
帮助的人:62.7万
展开全部
不能对ROWNUM 使用>(大于或等于1 的数值)、>=(大于1 的数值)、=(大于1 的数值),否则无结果
这是因为:
1、ROWNUM 是伪列,必须要要有返回结果后,每条返回记录就会对应产生一个ROWNUM
数值;
2、返回结果记录的ROWNUM 是从1 开始排序的,因此第一条始终是1;
这样,当查询到第一条记录时,该记录的ROWNUM 为1,但条件要求ROWNUM>1,因此不
符合,继续查询下一条;因为前面没有符合要求的记录,因此下一条记录过来后,其
ROWNUM 还是为1,如此循环,就不会产生结果。上述查询可以通过子查询来替代:
select * from(select rownum no ,id,name from a) where no=2
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
RJtycoon
2011-09-13 · TA获得超过359个赞
知道小有建树答主
回答量:452
采纳率:33%
帮助的人:107万
展开全部
rownum是从第一行开始查询的伪列,是返回的总行数,不能直接用rownum=2你可以通过子查询实现
select * from(select rownum no ,id,name from a) where no=2
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式