根据 SQL 服务器中的条件执行 While 循环
Do While loop based on conditions in SQL Server
如何根据以下条件在 SQL 服务器中实现 while 循环。
然后我需要执行 select 语句 which returns ITEM_CODE ,它也可能有多个行。
我想在 while 循环中为每个 ITEM_CODE 做的事情我需要从其他 table 获取数据(包括连接)并将这些数据插入 table .此循环将根据第一个语句 return.
结束计数
示例查询结构:
SELECT ITEM_CODE //While loop must execute the count of this rows
FROM 'TABLE_1'
WHERE ITEM_AVAILABILITY = 'TRUE'
此语句将 return 单行或 return 多行。
我每次都需要将此 ITEM_CODE 传递给 while 循环。在 while 循环中,我将从多个 table 中获取值并将其插入另一个 table.
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服务器是否可以,如果可以,请帮我解决这个问题。
试试这个:
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;
我们的想法是在缓冲区中有数据时执行循环 table。然后在循环的每次迭代中,获取一个随机项目代码值,执行您的内部操作并从缓冲区中删除该值。
有些人使用缓冲区 table 中的行 ID 列,例如 INT IDENTITY(1,1)
并选择第一个元素,进行内部操作,然后按 ID 删除。但是您需要知道记录的数量并在每次迭代时递增 id - 类似于 for
cycle.
如何根据以下条件在 SQL 服务器中实现 while 循环。
然后我需要执行 select 语句 which returns ITEM_CODE ,它也可能有多个行。
我想在 while 循环中为每个 ITEM_CODE 做的事情我需要从其他 table 获取数据(包括连接)并将这些数据插入 table .此循环将根据第一个语句 return.
结束计数示例查询结构:
SELECT ITEM_CODE //While loop must execute the count of this rows
FROM 'TABLE_1'
WHERE ITEM_AVAILABILITY = 'TRUE'
此语句将 return 单行或 return 多行。 我每次都需要将此 ITEM_CODE 传递给 while 循环。在 while 循环中,我将从多个 table 中获取值并将其插入另一个 table.
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服务器是否可以,如果可以,请帮我解决这个问题。
试试这个:
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;
我们的想法是在缓冲区中有数据时执行循环 table。然后在循环的每次迭代中,获取一个随机项目代码值,执行您的内部操作并从缓冲区中删除该值。
有些人使用缓冲区 table 中的行 ID 列,例如 INT IDENTITY(1,1)
并选择第一个元素,进行内部操作,然后按 ID 删除。但是您需要知道记录的数量并在每次迭代时递增 id - 类似于 for
cycle.