<分区>
我必须为在另一个表中找到的每一行插入 7 行到一个表中,我目前正在这样做是我的 C# 应用程序,但对于一个相对较小的数据库来说,它的速度非常慢。
我想将其移动到一个查询中,最好的方法是使用 foreach 循环,但 SQL 没有此功能,因此必须使用 WHILE 循环。
但是我什至无法进入插入部分,因为我无法循环遍历行,这是到目前为止我的 SQL
DECLARE @cnt INT = 0;
SELECT ResNo FROM Res WHERE TSGrNo = 1;
print 'row cnt';
print @@RowCount; -- prints 0 even though 6 rows are returned
WHILE @cnt < @@Rowcount
BEGIN
print @cnt;
--In here I need to do this
-- INSERT INTO tbl (_,tbl.ResNo,_, _, _)
-- VALUES (_,Row.ResNo,_,_,_)
SET @cnt = @cnt + 1;
END
有谁知道更好更有效的方法吗?
编辑:
这是我现在的位置
DECLARE @_R1 INT = 7, @_Date INT = 20150608
SELECT *
FROM Res r
WHERE NOT EXISTS
(
SELECT *
FROM Vis_ResR rr
WHERE rr.ResNo = r.ResNo
AND rr.Date = @_Date
)
AND r.TSGrNo = 1
AND r.R1 = @_R1
INSERT INTO Vis_ResR (R1, ResNo, Vis_ResR.Date, FrTm, ToTm)
VALUES (@_R1,r.ResNo,@_Date,0,0)
@_R1 和@_Date 将在发送查询之前设置,我只是不明白如何使用 r.ResNo 值使其插入