如何生成具有给定数字的连续记录?

时间:2013-04-24 09:04:01

标签: sql oracle

在oracle中,是否有内置函数来生成具有给定数字的连续记录?例如,数字为100,因此您可以生成包含100条记录,其值为1,2,3,4 ... 100的结果集,如下所示:

1
2
3
4
...
100

我知道存储过程可以做到这一点,我想知道是否还有其他方法只使用sql语句?

4 个答案:

答案 0 :(得分:4)

select level 
from dual 
connect by level <= 100

答案 1 :(得分:2)

这是另一种使用model子句的方法。 (Oracle 10g及更高版本)。

SQL> select x
  2    from dual
  3    model
  4    dimension by (0 as z)
  5    measures (0 as x)
  6    rules iterate(101) (
  7      x[iteration_number] =  iteration_number
  8    )
  9  ;

         X
----------
         0
         1
         2
         3
         4
         5
         6
         7
         8
         9
        10
        11

        ...

        100

答案 2 :(得分:1)

请尝试使用CTE:

WITH numbers(n) AS
(
SELECT 1 FROM dual
UNION ALL
SELECT n + 1 FROM numbers WHERE n < 100
)
SELECT * FROM numbers;

答案 3 :(得分:1)

使用分层查询是传统的:

 select level
   from dual
connect by level <= 100