Sql server 使用循环或数组将数据从一个表插入到另一个sql

Sql server 使用循环或数组将数据从一个表插入到另一个sql,sql-server,Sql Server,我试图将数据从一个表插入另一个表(从表[PPRS]插入表[Verify]),其中PPRS中的标题与表[Master]中的标题相同。有人建议我使用循环或数组来插入数据,而不是硬编码,所以我先尝试了循环 这是我的密码: Declare @counter int declare @total int set @counter = 0 SELECT @total = Count(*) FROM PPRS while @counter <= @total begin

我试图将数据从一个表插入另一个表(从表[PPRS]插入表[Verify]),其中PPRS中的标题与表[Master]中的标题相同。有人建议我使用循环或数组来插入数据,而不是硬编码,所以我先尝试了循环

这是我的密码:

Declare @counter int 
declare @total int
set @counter = 0
SELECT @total =  Count(*) FROM PPRS

while @counter <= @total
    begin 
        set @counter += 1
        insert into [Verify]
        select [Task_ID],
        [Project_StartDate] ,
        [PPR_Caption],
        [Date] 
        FROM PPRS
        where [PPR_Caption] in (SELECT [Caption] from MasterRecords)

    end 
Declare@counter int
声明@total int
设置@counter=0
从PPRS中选择@total=Count(*)

而@counter这将插入PPRS中标题位于主记录中的所有记录。不需要循环

insert into [Verify] 
select [Task_ID], [Project_StartDate] , [PPR_Caption], [Date] 
FROM PPRS 
where [PPR_Caption] in (SELECT [Caption] from MasterRecords);

Insert应该足以满足您的需求,不需要loopSQL是一种基于集合的语言。插入数据不需要循环。您只需插入一个
INSERT。。选择
。如果该循环起作用,将导致重复的条目,因为它总是执行相同的查询。顺便说一句,如果要检索插入的行数,请使用
@@ROWCOUNT
0行inserted
表示运行
INSERT
语句,但找不到匹配的记录。您可能应该发布这两个表的模式和测试数据。如果只运行查询的
SELECT
部分,会发生什么情况?我之所以认为应该使用循环/数组,是因为我有一个网页,用户可以使用excel电子表格将数据上载到[PPRS]表,而我想在存储过程中使用该数据。这就是为什么我希望上传到[PPRS]表的数据插入到[Verify]表中。如果您希望插入PPRS表中的所有数据,那么这个查询就足够了。如果您只想插入验证表中不可用但PPRS表中存在的数据,则需要另一个查询,请使用表结构和示例输入输出阐明您的要求