1

次のようなデータベースにデータを挿入しています。 (1, 'blue'), (2,'large'), (3, 'round')

そこにある番号は、別のテーブルのIDに対応しています。それは次のようになります:id | value

このデータを挿入するときは、IDではなく、数値が対応する実際の値を挿入したいと思います。

これを行うためのクエリはありますか?または、データベースに送信する前に値を一致させる必要がありますか?

私はそれが機能しないことを知っていますが、私は次のようなものがあることを望んでいます:
insert into table2 (table1.value[id=1], 'blue'), (table1.value[id=2],'large'), (table1.value[id=3], 'round') join table1

私は使用できると思います:

insert into table2 
    ((select value from table1 where id=1), 'blue'), 
    ((select value from table1 where id=2),'large'), 
    ((select value from table1 where id=3), 'round')

しかし、たとえば、41のクエリを作成する40の異なる属性!

4

2 に答える 2

2

まず、挿入する値(id、value)を使用してテーブルを仮想的に作成し、次に派生テーブルをtable1に結合して、結果をtable2に挿入します。

insert into table2
     select t.value, madeup.other
       from (select 1 id, 'blue' other union all
             select 2, 'large' union all
             select 3, 'round') madeup
       join table1 t on t.id = madeup.id;
于 2012-11-12T21:54:37.783 に答える
0

一時テーブルを使用して、IDを値にマップできます。私は実際にはMySQLを話しませんが、次のようなものです。

create table #mapping (id int, description varchar)
insert into #mapping values (1, 'blue')
insert into #mapping values (2, 'large')
insert into #mapping values (3, 'round')

insert into table2 
select table1.value, #mapping.description
from #mapping
join table1 on table1.id = #mapping.id

drop table #mapping
于 2012-11-12T21:54:52.837 に答える