在while循环中断开select语句并在while循环中创建多个表

时间:2017-07-04 09:07:50

标签: tsql ssms

是否有办法强制语句在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是在循环外部创建的

提前致谢!

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,将表格行包含在表格中。

相关问题