Как использовать while l oop и как использовать счет на сервере l oop на sql - PullRequest
0 голосов
/ 16 января 2020

Мой запрос:

Declare @counter int
set @counter = 1 
while @counter <= 12
Begin update table_1
set count = @counter
set @counter = @counter + 1

end 

Я использую этот запрос и ожидаю, что в моей таблице будет 12 записей в этом столбце (1-12), но после выполнения запроса ничего не отображается в моей существующей таблице. Может кто-нибудь сказать мне, как с этим бороться?

1 Ответ

0 голосов
/ 16 января 2020

Вы можете использовать рекурсивный CTE:

with cte as (
     select 1 as cnt
     union all
     select cnt + 1
     from cte c
     where c.cnt < 12
)
insert into table_1 (count)
   select c.cnt
   from cte c;

Если у вас больше счетчиков, тогда используйте MAX Recursion Подсказка, рекурсивный cte имеет значение по умолчанию 100 рекурсивных.

insert into table_1 (count)
  select c.cnt
  from cte c
  option(maxrecursion 0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...