私はwhere句でレコードをループ処理しようとしています。私は最初の100行を先頭取得し、しようとしていますSQLでwhileループを使用する
その後、最初の100行が結果を返さない場合は、
しかし、次の100(私はselect句で何を得るに適用されるいくつかのロジック)、それを2番目の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これについてもっと詳しく説明できますか?私は理解していない、私はデータの数百万行があり、私はテーブル全体をロックしたくないので、私はループをやっている。 –