2017-02-14 35 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); 
相關問題