---------------生成1-100数字的方法(包括SQL SERVER和DB2)----------

本文深入探讨了SQL中实现序列生成的多种方法,包括使用WHILE循环、GOTO语句、IDENTITY+临时表、ROW_NUMBER()、系统辅助表、CTE递归以及基于0-9数字序列的技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



--1.while
declare @t table (id int)
declare @i int set @i=1
while @i<101
begin
 insert into @t select @i
 set @i=@i+1
end
select * from @t

--2. goto
declare @t1 table (id int)
declare @j int set @j=1
f:
insert into @t1 select @j
set @j=@j+1
if(@j<101)
goto f
select * from @t1

--3.identity+临时表
select top 100 identity(int,1,1) id into #tmp from syscolumns,sysobjects


select id from #tmp;

drop table #tmp

--4.row_number()
select top 100 row_number() over(order by (select 1)) from syscolumns,sysobjects

--5.系统辅助表master..spt_values
select number from master..spt_values where type='p' and number between 1 and 100

--6.CTE递归
;with cte as
(
select 1 id union all select cte  from t where id<100
)
select * from t 


--7.用0-9做序列
;with f as
(
 select 0 id 
 union select 1 union select 2 union select 3 
 union select 4 union select 5 union select 6
 union select 7 union select 8 union select 9
)
select a.id+b.id+1 id from m a ,(select id*10 id from m) b




附上DB2的方法:


select row_number()over(order by (values 1)) as a from sysibm.sysdummy1,sysibm.syscoulmns fetch first 100 rows only;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值