我想通过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你能解释一下吗?我不明白,我做循环,因为我有数百万行数据,我不想锁定整个表。 –