0

我试图在“单 ID 列 SELECT 查询”的结果中获取循环的语法。

我的目标是,每次循环旋转以获取当前的 ID 号

查询是这样的:

SELECT Id FROM tbl WHERE SomeField = "Something"

假设结果是: 33 , 48 , 76

我想循环这个结果,所以每次旋转我都会有一个带有当前数字 Id 的变量

Start Loop
     @CurrentId = ???
End Loop
4

1 回答 1

0

你可以做这样的事情,使用 RDMBS 逐行工作不是一个好主意,但是,嘿:

DECLARE @id INT;
SELECT TOP 1 @id = id FROM tbl WHERE SomeField = 'Something' ORDER BY id;
WHILE @id IS NOT NULL
BEGIN
    --Do stuff with @id
    DECLARE @old_id INT;
    SELECT @old_id = @id;
    SELECT @id = NULL;
    SELECT TOP 1 @id = id FROM tbl WHERE SomeField = 'Something' AND id > @old_id ORDER BY id;
END;

或者我可能会考虑这样做,因为它在某些方面更清洁:

CREATE TABLE #loop_ids (
    loop_id INT IDENTITY(1,1),
    id INT);
INSERT INTO #loop_ids (id) SELECT id FROM tbl WHERE SomeField = 'Something' ORDER BY id;
DECLARE @id INT;
DECLARE @loop_id INT;
SELECT @loop_id = ISNULL(MAX(id), 0) FROM #loop_ids;
WHILE @loop_id > 0
BEGIN
    SELECT @id = id FROM #loop_ids WHERE loop_id = @loop_id;
    --Do stuff with @id
    SELECT @loop_id = @loop_id - 1; --Or SELECT @loop_id -= 1;
END;
于 2019-03-25T15:14:21.103 回答