ROWNUM + 大表方法
这里介绍如何使用ROWNUM这个伪列和有大量记录的一个表来产生连续整数。
要求
在使用这个方法前,首先得找到至少拥有和你所需产生的整数同样数量记录的表。例如,如果你想产生1到10,那么这个表至少有10条记录。数据字典ALL_OBJECTS 通常是所需要的表。.
方法
一旦你找到有足够数量记录的表,你可以简单地select ROWNUM from 来产生所需的整数,例如:
select rownum
from all_objects
where rownum <= 10 ;
ROWNUM
----------
1
2
3
4
5
6
7
8
9
10
我们使用这种方法解决文中开头的问题。
select
day_of_week ,
t.val
from
( select rownum - 1 as day_of_week
from all_objects
where rownum <= 7
) i
left outer join t
using ( day_of_week )
order by
day_of_week
;
DAY_OF_WEEK VAL
----------- ----------
0
1 100
2
3 300
4 400
5 500
6