Я пытаюсь пропустить мои записи с предложением where.Использование цикла while в sql
Я пытаюсь получить только топ 100 строк первой, а затем следующий 100 (какая-то логика я применять с тем, что я получаю в выбранном пункте)
Но, если первые 100 строк не возвращает результат, его не входит в 2-й 100 набор данных.
Мой запрос:
DECLARE @BatchSize INT = 100
DECLARE @Counter INT = 0
DECLARE @TableCount INT = 0
set @TableCount = (select count(*) from Table1) //@TableCount = 10000
while @Counter < @TableCount/@BatchSize //@Counter < 100
BEGIN
SET @[email protected]+1
INSERT INTO Table4
SELECT TOP(@BatchSize) * FROM Table2
WHERE NOT EXISTS (SELECT * Table3) and some condition
Здесь Если я не получаю данные за первые 100 строк, он не будет перейти к следующему 100 набора данных.
Что мне делать?
Петли и SQL обычно являются признаком того, что вы не думаете с точки зрения наборов. Вы действительно хотите думать с точки зрения наборов. –
Зачем вам это нужно? –
@JoelCoehoorn Можете ли вы объяснить мне больше об этом. Я не понял, я делаю циклы, потому что у меня есть миллионы строк данных, и я не хочу блокировать всю таблицу. –