Mysql 插入表A到表B中尚未存在的所有行和列
我有一个包含以下列的表: 我想将一个表A中的所有列和行添加到表B中,其中两个表中名为articlenumber的articlenumber列在B中已经不是一个articlenumber了 比如说: 表AMysql 插入表A到表B中尚未存在的所有行和列,mysql,Mysql,我有一个包含以下列的表: 我想将一个表A中的所有列和行添加到表B中,其中两个表中名为articlenumber的articlenumber列在B中已经不是一个articlenumber了 比如说: 表A |articlenumber|OrderNumber|ArticleNumber|PaymentType|Returned?|OrderDate | |3 |1 |1 |credit |No |01.01.2016
|articlenumber|OrderNumber|ArticleNumber|PaymentType|Returned?|OrderDate |
|3 |1 |1 |credit |No |01.01.2016|
|4 |2 |3 |credit |No |30.02.2016|
|5 |1 |2 |cash |No |01.01.2016|
表B
|articlenumber|OrderNumber|ArticleNumber|PaymentType|Returned?|OrderDate |
|1 |1 |1 |cash |Yes |01.01.2016|
|2 |2 |3 |credit |No |30.02.2016|
|3 |1 |1 |credit |No |01.01.2016|
预期成果:
|articlenumber|OrderNumber|ArticleNumber|PaymentType|Returned?|OrderDate |
|1 |1 |1 |cash |Yes |01.01.2016|
|2 |2 |3 |credit |No |30.02.2016|
|3 |1 |1 |credit |No |01.01.2016|
|4 |2 |3 |credit |No |30.02.2016|
|5 |1 |2 |cash |No |01.01.2016|
已尝试使用此选项:
INSERT INTO B SELECT * FROM A Where A.articlenumber = B.articlenumber;
但这似乎并不正确
我怎么做?谢谢你的支持 在articlenumber列上应用唯一键
然后
尝试窗体的左外部联接
INSERT INTO B SELECT A.* FROM A LEFT JOIN B ON A.articlenumber = B.articlenumber
WHERE B.articlenumber IS NULL
你不需要平等地得到这样的结果
INSERT INTO B SELECT A.* FROM A LEFT JOIN B ON A.articlenumber <> B.articlenumber
无法在ArticleNumber上应用唯一密钥这是一个可行的解决方案吗?在B中插入SELECT*FROM A,其中articlenumber不在SELECT articlenumber FROM B中;你在使用某种奇怪的区分大小写的MySQL版本吗。通常不可能将相同的名称赋予同一表中的两列。
INSERT INTO B SELECT A.* FROM A LEFT JOIN B ON A.articlenumber <> B.articlenumber
INSERT INTO B SELECT * FROM A
WHERE articlenumber NOT IN (SELECT articlenumber FROM B);