Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MYSQL从id上的两个独立表插入现有表数据_Mysql_Sql_Join_Insert - Fatal编程技术网

MYSQL从id上的两个独立表插入现有表数据

MYSQL从id上的两个独立表插入现有表数据,mysql,sql,join,insert,Mysql,Sql,Join,Insert,我有一张空桌子“new_foobar”。它有“fbc_主键”、“fbc_二”、“fbc_三”和“fbc_四”列 TABLE foo fc_primary_key | fc_two | ------------------------- 1 | hello | 2 | goodbye| TABLE bar bc_primary_key | bc_two | bc_three | --------------------------------

我有一张空桌子“new_foobar”。它有“fbc_主键”、“fbc_二”、“fbc_三”和“fbc_四”列

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 | fbc_三默认为“苹果”

然后我有一个表'foo',带有'fc_pimary_key','fc_two'列。还有一个表“bar”,其中包含“bc_primary_key”、“bc_two”、“bc_three”列

fbc_主键、bc_主键和fc_主键都是各自表的主键

如何将fc_2插入fbc_2,将bc_3插入fbc_4

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 | 桌上食物 fc_主键| fc_二| ------------------------- 1 |你好| 2 |再见| 吧台 bc|U主键| bc|U二| bc|U三| ------------------------------------ 1 | abc | 123| 2 | def | 456|
*注意:bar和foo是一对一的关系。 表foobar fbc|U主键| fbc|U二| fbc|U三| fbc|U四| --------------------------------------- /*空的*/ …在一些SQL魔法之后。。。。 表foobar fbc|U主键| fbc|U二| fbc|U三| fbc|U四| --------------------------------------------------- 1 |你好|苹果| 123| 2 |再见|苹果| 456| 我遇到的问题是,如何使数据列位于foobar列之下

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。

如果
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);

对于
foo
中的每个条目,
bar
中是否总是有相应的条目(反之亦然)?bar和foo有一对一的关系。@Golez的答案更适合一般情况。