我将数据插入到如下所示的数据库中:
(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个查询!
答案 0 :(得分: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;
答案 1 :(得分: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