基于SQL Server中的条件执行While循环

基于SQL Server中的条件执行While循环,sql,sql-server,tsql,sql-server-2014,Sql,Sql Server,Tsql,Sql Server 2014,如何基于以下条件在SQLServer中实现while循环 然后我需要执行select语句,该语句返回ITEM_代码,它可能也有多行 在while循环中,我要做的是为每个ITEM_代码从其他表(包括联接)中获取数据,并将这些数据插入到表中。此循环将根据返回的第一个语句获取结束计数 示例查询结构: SELECT ITEM_CODE //While loop must execute the count of this rows FROM 'TABLE_1' WHERE ITEM_AVAILA

如何基于以下条件在SQLServer中实现while循环

然后我需要执行select语句,该语句返回ITEM_代码,它可能也有多行

在while循环中,我要做的是为每个ITEM_代码从其他表(包括联接)中获取数据,并将这些数据插入到表中。此循环将根据返回的第一个语句获取结束计数

示例查询结构:

SELECT ITEM_CODE  //While loop must execute the count of this rows
FROM   'TABLE_1'
WHERE  ITEM_AVAILABILITY = 'TRUE'
此语句将返回一行,也可以返回多行。 每次我都需要将此项代码传递给while循环。在while循环中,我将从多个表中获取值,并将其插入到另一个表中

WHILE (@COUNT <>0){
//Need to have the ITEM_CODE while looping each time.
//Get data from multiple tables and assign to variables (SET @VARIABLES)
//Insert statement
IF (@COUNT = @COUNT)
     BREAK;
}
SQL server是否可以,如果可以,请帮助我解决此问题。

尝试以下操作:

DECLARE @DataSource TABLE
(
    [ITEM_CODE] VARCHAR(12)
);

INSER INTO @DataSource ([ITEM_CODE])
SELECT ITEM_CODE  //While loop must execute the count of this rows
FROM   'TABLE_1'
WHERE  ITEM_AVAILABILITY = 'TRUE';

DECLARe @CurrentItemCode VARCHAR(12);

WHILE(EXISTS (SELECT 1 FROM @DataSource))
BEGIN;

    SELECT  TOP 1 @CurrentItemCod = [ITEM_CODE] 
    FROM @DataSource

    --



    --

    DELETE FROM @DataSource
    WHERE [ITEM_CODE] = @CurrentItemCod;

END;
其思想是在缓冲表中有数据时执行循环。然后在循环的每次迭代中,获取一个随机项代码值,执行内部操作并从缓冲区中删除该值


有些人在缓冲区表中使用行ID列,例如INT IDENTITY1,1,并选择第一个元素,执行内部操作,然后按id删除。但您需要知道记录的计数,并在每次迭代中增加id-类似于for cycle。

您刚刚问了基本相同的问题并得到了回答!就在一个小时前-请不要一遍又一遍地重复同一个问题。要点是:您需要通过痛苦的行处理来忘记循环和RBAR行,正如您可能从VB、PHP、C或您使用的任何其他语言中所知道的那样。SQL是不同的,您需要调整您的心态,以使用正确的基于集合的方法-不要循环-让SQL为您处理。只需用SQL表达您想要的内容—不要详细地告诉SQL如何做—它可以自己解决,通常比您能告诉它的要好