各位大哥,小弟想请教一下PL/SQL.
    我做select语句,有简单的函数或方法,在前加一前orderid吗?
  
    1,product_a
    2,product_b
    3,product_c

解决方案 »

  1.   

    用oracle的虚列,rownum,rowid
    select rownum, rowid, t.* from t
      

  2.   

    不对,我的select语句有where条件,rownum只记录行在表中的行number,我需要的是我筛选出来的orderid
      

  3.   

    你的orderid代表什么,是什么样的一组有一定规则的数据,这个你得说清楚才行
      

  4.   

    就是按照我的select语句(有where筛选条件,和order by)出来的结果,然后一列是orderid例如 select * from product where eff_date>='20070701' order by price descorderid   product
    1,       product_a 
    2,       product_b 
    3,       product_c 
      

  5.   

    就是按照我的select语句(有where筛选条件,和order   by)出来的结果,然后一列是orderid 例如   select   *   from   product   where   eff_date> ='20070701'   order   by   price   desc orderid       product 
    1,               product_a   
    2,               product_b   
    3,               product_c   ==================================================================================
    這樣的意思的話,那就是説orderid 會隨著查詢條件的變化而變化了?
      

  6.   

    是的, 总之出来的结果orderid按1,2,3,...往下累加
      

  7.   

    這個沒搞過,呵呵
    不過個人認爲,既然用order by排序了,前面再用1、2、3...不是很必要!   
      

  8.   

    select  rownum,product  from product where eff_date>='20070701' order by price desc
    这个不就是你要的结果吗?
      

  9.   

    不是,rownum只是记录在表中的行的number, 不是我select出来结果的行number
      

  10.   

    如果是要结果集里的序列,用这个,连续的,从1开始.select  rownum,product  from product where eff_date>='20070701' order by price desc
    如果是要源表里的序列,用这个,序列不确定,要看结果集的数据在源表的位置.selct product  
    from (select  rownum,t.*  from product t)
    where eff_date>='20070701'
    order by price desc;
    如果还不是LZ要的,可以根据情况在子查询里加入条件来满足要求.
      

  11.   

    多谢,各位大力支持,已经解决问题,其实我想要的是select rownum,t.product
    (select product from product where eff_date>='20070701' order by price desc) t(本人理解错误,rownum其实是结果集的行number,只有若select有order by就会打乱rownum原有排序,所以要作嵌套查询)thanks so much~~