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

解决方案 »

  1.   

    sequence可能不连续,所以你的u_id不能等同于rownum
    要确定获得连续的编号,还是需要使用rownum
    select rownum,t.* from 
    (select ******* from ***** where u_id=? order by u_id) t;
      

  2.   

    不是这样。我就是想获得id对应的rownum值。
    例如 查询结果是 
    rownum    id
    1          1
    2          4
    3          7我想通过id=4获得 rownum 的值。就是2. 你的子查询查的是上面的一列结果。
      

  3.   

    oracle中rownum是一个伪列,为查询得到的结果集做一个行标号,
    这个行标号从1开始,一直到增加到最后一个行;
    我们可以这么引用:
    select * from (
    select col_name,rownum ru 
    from table_name)
    where rn<5
    但是不能这么引用:
    where rn>2