重複の可能性:
while ループでクエリが正常に機能しない
挿入しようとしている WHILE ループがあります
DECLARE @CurrentOffer int =121
DECLARE @OldestOffer int = 115
WHILE 1 = 1
BEGIN
INSERT INTO Temp WITH (TABLOCK)
SELECT TOP (100) clubcard
FROM TempClub WITH (NOLOCK)
WHERE ID BETWEEN @MinClubcardand AND @MaxClubcard
declare @sql varchar(8000)
while @OldestOffer <= @CurrentOffer
begin
print @CurrentOffer
print @OldestOffer
set @sql = 'delete from Temp where Clubcard
in (select Clubcard
from ClubTransaction_' + convert(varchar, @CurrentOffer) +
' with (nolock))'
print (@sql)
exec (@sql)
SET @CurrentOffer = @CurrentOffer-1
IF @OldestOffer = @CurrentOffer
begin
-- my logic
end
end
END
ここで行っているのは、行をバッチでテーブルに挿入し、Temp
テーブルに存在するかどうかを確認することですClubTransaction_121
終了する場合は、ここで削除する必要があります。私のループは最初の 100 クラブカードを取得しClubTransaction_121
、チェックして次のオファーである 120 をチェックするために移動します。
しかし、私のテーブルには 3000 行あり、すべての行Temp
を含むテーブルでチェックする必要があります。ClubTransaction_121
最初の 100 レコードのみをチェックし、次の ClubTransaction_120 でチェックに移動します。
すべてのクラブカードをチェックする必要が ありClubTransaction_121
ます。ClubTransaction_120
ClubTransaction_119