注册 登录
编程论坛 SQL Server论坛

如何写SQL循环插入语句

scindy 发布于 2008-09-16 14:24, 3543 次点击
在表A中,有一字段为INT型,里面存入像1,2,3...这样的整型数字,我要实现的是如果往表A中插入一条数据,根据这个字段的值往表B中插入与这个值相等行数的数据,也就是说如果表A中这个字段的值是3,那么就往表B中插入3条数据.并且插入到表B中的值要加1.

说明:Memo1,Memo2是字符型,插入的时候要数据转换.

如:

表A:   ID       Num      Memo1
       1         3       0001

表B    ID       Memo2
        1       0002
        1       0003
        1       0004
13 回复
#2
scindy2008-09-16 14:32
不好意思 表B 那写错了,应该是

表B    ID      Memo2
        1      0002
        2      0003
        3      0004
#3
nbxkele2008-09-16 16:33
用循环语句试试
例如:while语句
#4
师妃暄2008-09-16 16:38
create table td1
(
    [ID] int identity(1,1) not null,
    num int,
    memo1 varchar(10)
)
create table td2
(
    [ID] int identity(1,1) not null,
    memo2 varchar(10)
)

create trigger tri_td1 on td1
for insert
as
    declare @num int
    declare @memo int
    declare @flag int
    set @flag=0
    select @num=num,@memo=memo1 from inserted
    while @flag<@num
    begin
        set @memo=@memo+1
        insert into td2(memo2) values(right('0000'+cast(@memo as varchar),4))
        set @flag=@flag+1
    end
go
#5
nbxkele2008-09-16 17:12
用触发器实现
很好,很强大
#6
nbxkele2008-09-16 17:13
用触发器实现
很好,很强大
#7
卜酷塔2008-09-16 18:00
[bo][un]师妃暄[/un] 在 2008-9-16 16:38 的发言:[/bo]

create table td1
(
     int identity(1,1) not null,
    num int,
    memo1 varchar(10)
)
create table td2
(
     int identity(1,1) not null,
    memo2 varchar(10)
)

create trigger tri_td1 on td1
for in ...

还是不错的。佩服
#8
上官逸淳2008-09-16 18:28
不愧是版主,果然很厉害啊!
#9
球球2008-09-16 19:05
妃子,漂亮!
#10
上官逸淳2008-09-16 20:36
@memo=memo1,类型不匹配啊!!!
#11
师妃暄2008-09-16 20:40
int---varchar 隐式转换
#12
ggsdduyoyo2008-09-18 10:47
不错,学习中。。。
#13
初学Delphi2008-09-20 09:39
[bo][un]师妃暄[/un] 在 2008-9-16 16:38 的发言:[/bo]

create table td1
(
     int identity(1,1) not null,
    num int,
    memo1 varchar(10)
)
create table td2
(
     int identity(1,1) not null,
    memo2 varchar(10)
)

create trigger tri_td1 on td1
for in ...




最后 后边加0的不错   我都一直用left('000000',4-len(@a))  哈哈
#14
woshijianzhong2008-09-20 12:16
新来的
佩服
1