2017-02-14 36 views
-1

我有下面的表:插入从表A到B的所有行和列其中B中不存在已经

我想从一个表(A)中的所有列和行添加到表(B )其中articlenumber(两个表中的列名称为“articlenumber”)不是B中的一个商品编号。

Let's说:

表A

|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; 

但这似乎并不正确

我该怎么办呢?感谢您的支持!

+1

这是一个解决方案,将工作? 'INSERT INTO B SELECT * FROM WHERE articlenumber NOT IN(SELECT articlenumber FROM B);' – AbsoluteBeginner

+0

您是否使用某种奇怪的区分大小写的MySQL版本。通常不可能将同一个名称归于同一个表中的两列。 – Strawberry

回答

1

应用唯一键上articlenumber

然后

insert ignore into B(column_names) 
select column_names from a; 
+0

是不可能在articlenumber上应用唯一键 – AbsoluteBeginner

0

尝试左外连接形式的

INSERT INTO B SELECT A.* FROM A LEFT JOIN B ON A.articlenumber = B.articlenumber 
WHERE B.articlenumber IS NULL 
0

你需要不等于(<>)得到这个像

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); 
相关问题