Цикл на SELECT ID одного столбца - PullRequest
0 голосов
/ 25 марта 2019

Я пытаюсь получить синтаксис цикла по результатам «запроса SELECT для столбца с одним идентификатором».

Моя цель заключается в том, чтобы каждый раз, когда цикл вращался, чтобы получить текущий номер идентификатора

Запрос выглядит примерно так:

SELECT Id FROM tbl WHERE SomeField = "Something"

Допустим, есть следующие результаты: 33, 48, 76

Я хочу зациклить эти результаты, чтобы при каждом вращении у меня была переменнаяс текущим номером Id

Start Loop
     @CurrentId = ???
End Loop

1 Ответ

0 голосов
/ 25 марта 2019

Вы можете сделать что-то вроде этого, не рекомендуется использовать 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...