2012-11-12 117 views
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') 

但隨着比方說,40個不同的屬性,這些屬性會做41個查詢!

回答

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; 
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 
相關問題