私は挿入しようとしているWhileループを持っています。whileループで正常に動作しないクエリ
DECLARE @CurrentOffer int =121
DECLARE @OldestOffer int = 115
DECLARE @MinClubcardID bigint=0
DECLARE @MaxClubcardID bigint=1000
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
私のTempClubテーブルは常に最初の100個のレコードのみをチェックします。私のTempClubテーブルには3000レコードあります。 ClubTransaction_121、ClubTransaction_120、ClubTransaction_119のテーブルを使って、すべての私のクラブカードを3000レコードすべてをチェックする必要があります。
私の目はあまりにもつまずきました。あなたは何か複雑なものを探しています... –
私はバッチ賢明なデータを挿入しているので、私はトップ100を抽出し、すべてのレコードを終了するまでプロセスを繰り返す。 – happysmile
ああ、われわれの部分では理解できない。ちょうどあなたがアンレルがちょっとしたと思った。 @Chrisからの答えは受け入れられるのですか、彼はそれを手に入れませんでしたか? –