如题:
   
   
     select rownum from dual connect by rownum <=10;
     select level  from dual connect by level <= 10;
       以上语句中的rownum与level的的区别在哪?
    或者是rownum与level的原理分别是什么?    望oracle高手解答下! 谢谢!

解决方案 »

  1.   

    1、rownum是ORACLE的伪列,是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数,且rownum不能以任何表的名称作为前缀。2、level也是ORACLE的伪列,他只能用在树型查询语句start with...connect by...中,代表树的层次,树根为1,下一级为2,以次类推。
      

  2.   

    伪列rownum和level
    伪列就是并非在表中真正存在的列。
    rownum来说它是oracle系统顺序分配为从查询返回的行的编号
    (1)可以使用rownum=1作为条件,但无rownum = n(n>1的自然数)的用法
    (2)无rownum> n(n>1的自然数)的用法
    (3)可以使用rownum< n(n>1的自然数)
    Oracle中使用connect by 来实现树状查询,其中可以使用level这个伪列来实现分层查询。
      

  3.   

    level只在connect by中可以使用 rownum到处都可以