特定のシリーズの列に値を入れたい
10100
10200
10300
.
.
.
.
11000
11100
11200
.
.
これを行う方法 ?whileループが使われると思います
insert into mytable(col_name)
select <>
特定のシリーズの列に値を入れたい
10100
10200
10300
.
.
.
.
11000
11100
11200
.
.
これを行う方法 ?whileループが使われると思います
insert into mytable(col_name)
select <>
あなたはこれを行うことができます:
WITH Temp
AS
(
SELECT digit
FROM (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) AS temp(digit)
), Nums
AS
(
SELECT t3.digit * 100 + t2.digit * 10 + t1.digit + 1 AS id
FROM TEMP AS t1
CROSS JOIN TEMP AS t2
CROSS JOIN TEMP AS t3
)
SELECT
n = 10100 + (id - 1) * 100
from nums
ORDER BY n;
このクエリは、探しているシーケンスの 1000 行を提供します。これは、算術進行と呼ばれます。シーケンスでは、シーケンスの n 番目の項は で与えられA + (n - 1) * d
ます。あなたのシーケンスでは:a = 10100
最初の数字、d = 100
シードである開始番号。
最初に、10 個の数値を生成するアンカー クエリを使用しました (この構文は SQL Server 2008 の新機能であることに注意してください)。
次に、それをそれ自体で3回交差結合して、10 3行= 1000行を与えました。これらを使用して、ルールに基づいてこのシーケンスの1000個の数値を生成しましたA + (n - 1) * d
。
次に、それらを新しいテーブルに挿入できます。INSERT INTO SELECT
単に の代わりに を実行しSELECT
ます。
注意:このすべてのものの代わりに列を使用する必要がある場合がありますIDENTITY
。これを使用すると、開始値とシード値を定義できます。その後、自動的にインクリメントされます。次の記事を参照してください。
これを試してください:
DECLARE @table as TABLE(NUM bigint)
declare @var bigint
set @var=10100
while @var<11200
begin
insert into @table values (@var)
set @var=@var+100
end
select * from @table