0

テーブルに行を挿入するストアド プロシージャを作成しています。問題は、列の多くが異なる値のリストを持つことができ、データベース内のすべての行がこれらの値を反映する必要があることです。例えば:

私はテーブルを持っています: Table1(state, number)

state の値と数値は 1 ~ 3 であるため、state は 1 ~ 50 である必要があります。州ごとに各番号の行が必要です。

(1,1) (1,2) (1,3) (2,1)...など

これを行うための良い方法が必要ですが、私の研究は実りがありませんでした. 誰か提案はありますか?

4

2 に答える 2

3

値を生成する良い方法は、を使用することcross joinです。次に例を示します。

insert into table(state, number)
      select s.state, n.number
      from (select 'AK' as state union all select 'AL'  union all . . .
           ) s cross join
           (select 1 as number union all select 2 union all select 3
           ) n

州や番号のリストがすでにある場合は、これを使用できます。例えば:

insert into table(state, number)
      select s.state, n.number
      from (select state from states
           ) s cross join
           (select 1 as number union all select 2 union all select 3
           ) n
于 2013-04-30T14:18:06.577 に答える
0

必要なのは、2 つのテーブル間のクロス結合です。一方には 50 行が含まれ、もう一方には 3 行が含まれます。

オラクルの場合:

select *
from
(
  select rownum as state
  from dual
  connect by rownum <= 50
) t1
, 
(
  select rownum as num
  from dual
  connect by rownum <= 3
) t2

フィドル

于 2013-04-30T14:22:45.077 に答える