通过主键可以获得rownum吗

qxhj2008 2011-06-08 11:58:14
假设一个表,主键为 u_id. 通过sequence递增。
查询的时候select ******* from ***** where u_id=? order by u_id;
可以通过u_id 获得它的 rownum 吗?


...全文
51 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
tangren 2011-06-08
  • 打赏
  • 举报
回复
sequence可能不连续,所以你的u_id不能等同于rownum
要确定获得连续的编号,还是需要使用rownum
select rownum,t.* from
(select ******* from ***** where u_id=? order by u_id) t;
304的的哥 2011-06-08
  • 打赏
  • 举报
回复
oracle中rownum是一个伪列,为查询得到的结果集做一个行标号,
这个行标号从1开始,一直到增加到最后一个行;
我们可以这么引用:
select * from (
select col_name,rownum ru
from table_name)
where rn<5
但是不能这么引用:
where rn>2
qxhj2008 2011-06-08
  • 打赏
  • 举报
回复
[Quote=引用楼主 qxhj2008 的回复:]
假设一个表,主键为 u_id. 通过sequence递增。
查询的时候select ******* from ***** where u_id=? order by u_id;
可以通过u_id 获得它的 rownum 吗?
[/Quote]


不是这样。我就是想获得id对应的rownum值。
例如 查询结果是
rownum id
1 1
2 4
3 7

我想通过id=4获得 rownum 的值。就是2. 你的子查询查的是上面的一列结果。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧