[英]Creating a range of numbers in an sql subquery
有没有比下面更好的方法可以在SQL中生成一系列数字? 我正在使用MySql。
SELECT tens.x + ones.x + 1
FROM
(SELECT 0 x UNION ALL
SELECT 1 x UNION ALL
SELECT 2 x UNION ALL
...
SELECT 9 x ) ones
CROSS JOIN
(SELECT 0 x UNION ALL
SELECT 10 x UNION ALL
SELECT 20 x UNION ALL
...
SELECT 90 x ) tens;
在Oracle中执行此操作的一种常见方法是滥用rownum伪列:
select rownum from all_objects where rownum<=100;
使用Sql Server 2005+,您可以利用CTE
DECLARE @Start INT, @End INT
SELECT @Start = 0, @End = 100000
;WITH Numbers AS (
SELECT @Start Num
UNION ALL
SELECT Num + 1
FROM Numbers
WHERE Num < @End
)
SELECT *
FROM Numbers
OPTION (MAXRECURSION 0);
PostgreSQL允许您使用:
select * from generate_series(2,4);
generate_series
-----------------
2
3
4
这是特定于PostgresSQL引擎的。 但是,为您的数据库编写存储过程并不难。
为什么不loop
? 喜欢
BEGIN
DECLARE a INT Default 0 ;
simple_loop: LOOP
SET a=a+1;
insert into mytable(id) values(a);
IF a=1000 THEN
LEAVE simple_loop;
END IF;
END LOOP simple_loop;
从Mysql For循环修改
如果语法错误,请原谅我,因为我是一个纯SQL SERVER家伙(:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.