我有一张表'new_foobar'是空的。它有'fbc_primary_key','fbc_two',fbc_three和fbc_four。
fbc_three默认为'apple'
然后我有一个表'foo',列'fc_pimary_key','fc_two'。还有一个表'bar',列'bc_primary_key','bc_two','bc_three'。
fbc_primary_key,bc_primary_key和fc_primary_key都是各自表格的主键。
如何将fc_two插入fbc_two,将bc_three插入fbc_four。
TABLE foo fc_primary_key | fc_two | ------------------------- 1 | hello | 2 | goodbye| TABLE bar bc_primary_key | bc_two | bc_three | ------------------------------------ 1 | abc | 123 | 2 | def | 456 | *NOTE bar and foo have a 1-to-1 relationship. TABLE foobar fbc_primary_key | fbc_two | fbc_three | fbc_four | --------------------------------------- /* empty */ ...AFTER SOME SQL MAGIC.... TABLE foobar fbc_primary_key | fbc_two | fbc_three | fbc_four | --------------------------------------------------- 1 | hello | apple | 123 | 2 | goodbye | apple | 456 |
我遇到的问题是,如何将数据列放在foobar列下。
答案 0 :(得分:2)
insert into foobar
select
ifnull(f.fbc_primary_key, b.fbc_primary_key),
fbc_two,
fbc.three
from
foo f
full outer join bar b on b.fbc_primary_key = f.fbc_primary_key
如果您只想要两个表中都存在的记录,则可以使用内部联接。你也可以跳过ifnull,因为f和b都有id。
答案 1 :(得分:1)
如果foo
和bar
之间的关系是一对一的,双方都需要:
INSERT INTO foobar (
SELECT f.fc_primary_key, f.fc_two, b.bc_three
FROM foo f INNER JOIN bar b ON f.fc_primary_key = b.bc_primary_key);