Я использую следующий запрос. Но он просто переносит верхние 1000 строк, вот и все. Хотя у меня больше строк. Если я удалю пункт where not exists
, я получу полные данные. Можете ли вы сообщить мне, где я ошибаюсь?Query inserting only top 100 rows
DECLARE @BatchSize INT = 1000
DECLARE @Counter INT = 0
DECLARE @TableCount INT = 0
set @TableCount = (select count(*) from Table2)
while @Counter < (@TableCount/@BatchSize+1)
BEGIN
INSERT INTO Table1
SELECT * FROM Table2 MH
inner join Table3 M
on MH.Mid = M.Mid
WHERE NOT EXISTS (
SELECT * FROM Table1
where MH.otherid = M.otherid
)
order by id OFFSET (@BatchSize * @Counter)ROWS FETCH NEXT @Batchsize ROWS ONLY;
SET @[email protected]+1
END
Почему это просто вставка 1000 строк?
И * почему * вы выполняете запрос таким образом? Почему бы просто не выполнить полный запрос за один раз? –
Поскольку вопрос, который стоит «почему он просто вставляет первые 1000 строк», больше не действует из-за простой ошибки (исходная форма предложения 'WHERE NOT EXISTS'), тогда я голосую, чтобы закрыть этот вопрос. –
У меня есть миллионы данных, и я не хочу блокировать полную таблицу. –