2

Microsoft SQL Server 2008 を使用して、次のような SQL クエリを作成しました。

insert into [Schema].[Table] ([A], [B], [C]) values (@A, 1, @C)
insert into [Schema].[Table] ([A], [B], [C]) values (@A, 2, @C)
                                                         ⁞
insert into [Schema].[Table] ([A], [B], [C]) values (@A, n, @C)

クエリのパフォーマンスが問題にならない場合、 n行のコードを記述しないようにする方法や、少なくともクエリをよりコンパクトにする方法はありますか? パフォーマンスが問題になる場合、それは問題になりますか?

4

3 に答える 3

1

おそらくこれよりも優れたオプションがありますが、SQL Server 2008+ には次の構文がありますVALUES

insert into [Schema].[Table] ([A], [B], [C]) 
values (@A, 1, @C),
(@A, 2, @C),
(@A, 3, @C),
(@A, 4, @C),
...
(@A, n, @C)

もう 1 つのオプションは、数値テーブルに結合するか、再帰 CTEを使用することです。

于 2012-08-04T20:46:49.803 に答える
1

おそらく、この特定のケースではループを利用できます。つまり、次のようになります。

declare @counter int
set @counter = 1

while @counter < 10
begin
  insert into [Schema].[Table] ([A], [B], [C]) values (@A, @counter, @C)
  set @counter = @counter + 1
end
于 2012-08-04T20:57:07.407 に答える