Simulate a loop in SQL【By hmxxyy】

lastwinner發表於2005-11-26
SQL> select * from x;

C1 C2
---------- ----------
11111 1
22222 2
33333 3
44444 4
[@more@]

SQL> create table y (c1 number);

Table created.

SQL> insert into y
2 select a.c1 from x a,
3 (
4 select rownum rn from (select max(c2) maxlevel from x) a connect by 1=1 and level <=
5 maxlevel) b
6 where a.c2 >= rn
7 order by c1
8 /

10 rows created.

SQL> select * from y;

C1
----------
11111
22222
22222
33333
33333
33333
44444
44444
44444
44444

http://blog.itpub.net/post/4791/27191

偶的方法:
SQL> create table loopx(c1 varchar2(20),c2 number(3));

表已建立。

SQL> insert into loopx select lpad(rownum,5,rownum),rownum from dual connect by
rownum<5;

已建立4行。

SQL> select * from loopx;

C1 C2
-------------------- ----------
11111 1
22222 2
33333 3
44444 4

SQL> select distinct a.c1,level from loopx a connect by level<=c2;

C1 LEVEL
-------------------- ----------
11111 1
22222 1
22222 2
33333 1
33333 2
33333 3
44444 1
44444 2
44444 3
44444 4

已選擇10行。

不明白他為什麼要寫那麼複雜,不過我用了distinct,過濾了大量的記錄,也許這種方法效率低吧

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29867/viewspace-810757/,如需轉載,請註明出處,否則將追究法律責任。

相關文章