我想通過where子句循環訪問我的記錄。在sql中使用while循環
我想只得到第一個頂部100行,然後下一個100(一些邏輯我申請與我在SELECT子句中獲得)
但是,如果第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你能解釋一下嗎?我不明白,我做循環,因爲我有數百萬行數據,我不想鎖定整個表。 –