Подтвердить что ты не робот

Что не так с этим вложенным циклом WHILE в SQL

Сегодня я столкнулся с такой странной ситуацией, когда делал какой-то одноразовый код sql. Этот вложенный цикл, кажется, не запускает внешний цикл: он печатает (0,0), (0,1), (0,2) и (0,3)

declare @i int, @j int
select @i = 0, @j = 0
while @i < 3 begin
    while @j < 3 begin
        select @i as i, @j as j
        set @j = @j + 1
    end
    set @i = @i + 1
end

Я пропустил что-то явно очевидное?

4b9b3361

Ответ 1

Вы не сбрасываете свой j var для следующей итерации

 set @i = @i + 1
 set @j = 0

Ответ 2

Вы не перезагружаете @j.

Ответ 3

declare @i int, @j int
select @i = 0, @j = 0 --<- Wrong place set @j
while @i < 3 
begin
    select @i, @j --<-test print, then you will know what happened~
    --set @j = 0 --<- Right place to set @j
    while @j < 3 
    begin
        select @i as i, @j as j
        set @j = @j + 1
    end
    set @i = @i + 1
end

Исходный результат 0/0 0/0 0/1 0/2 1/3 2/3

Ну, выше сказанное, просто добавьте код для более подробной информации, lol ~