是否有办法强制语句在while循环中仅运行一次select, 例如:
WHILE(@NUMBERCOUNTER <@TOTALNUMBER)
BEGIN
Declare @Table2(
Id nvarchar(10)
);
Insert into @Table2
SELECT * FROM MainTable where Id in (select Id from Table1)
Insert into @Table2
SELECT * FROM MainTable where Id in (select Id from Table2)
END
我只想运行这一行
SELECT * FROM MainTable where Id in (select Id from TABLE1)
一次,然后另一个选择连续运行,直到它符合While条件。
另外,有没有办法在multiples表中为每个select分隔数据。我不希望第二个选择的结果与第一个结果混合。
现在的问题是我无法在while循环之外移动select语句,因为它无法选择@ Table2。我不能在while循环之外创建@Table2,数据将被混合。
注意:表1是在循环外部创建的
提前致谢!
答案 0 :(得分:1)
第一个问题: 您可以添加标志,例如:
DECLARE @flag bit = 0
WHILE(@NUMBERCOUNTER <@TOTALNUMBER)
BEGIN
Declare @Table2(
Id nvarchar(10)
);
IF @flag = 0
BEGIN
Insert into @Table2
SELECT * FROM MainTable where Id in (select Id from Table1)
SET @flag = 1;
END
Insert into @Table2
SELECT * FROM MainTable where Id in (select Id from Table2)
SET @NUMBERCOUNTER = @NUMBERCOUNTER + 1; --You had infinite loop
END
另外,有没有办法在multiples表中为每个select分隔数据。我不希望第二个选择的结果与第一个结果混合。
在表格中添加标记@ Table2,将表格行包含在表格中。