2016-05-12 29 views
1

我需要創建表與表A和表B.兩個表有一定的匹配字段之間所有未匹配的ID,但我需要所有的表僅A創建表的選擇與加盟

表中的列甲

ID NAME address  Phone 
12 xyz some street 1234566 
22 xyz some street 1234566 
3 xyz some street 1234566 

表B

ID Vendor_NAME address  Phone email 
1 xyz   street  1234566 [email protected] 
2 xyz   street  1234566 
3 xyz   street  1234566 

所得表 - 表C

ID NAME address  Phone 
12 xyz some street 1234566 
22 xyz some street 1234566 

我使用這個查詢來獲取從表一

select * from A left join B on A.ID=B.ID where B.ID is null 

所有未匹配的值。這給了我所有從表一和表B.如何創建表C中,使其將有場只有從表A

未匹配的值和字段更新與表C

表B

ID Vendor_NAME   street_address Phone email 
1 xyz   street   1234566 [email protected] 
2 xyz   street   1234566 
3 xyz   street   1234566 
一個表B

表C

ID NAME address  Phone 
12 xyz some street 1234566 
22 xyz some street 1234566 

更新表B中

ID Vendor_NAME   street_address Phone email 
1  xyz     street   1234566 [email protected] 
2  xyz     street   1234566 
3  xyz     street   1234566 
12 xyz     some street  1234566 
22 xyz     some street  1234566 

表B具有相同的數據,但不同的列名,並會有一些額外的列。我想插入表C表B中的所有數據。

回答

1

使用SELECT * INTO將有助於您的情況。無需創建表格模式。 它會自動與出欄的數據類型

CREATE Table TableC as SELECT A.* 
FROM TableA 
LEFT JOIN TableB ON A.ID = B.ID 
WHERE B.ID IS NULL 

更新的答案,每個操作的新請求一起創建該表:

INSERT INTO TableB (ID, Vendor_NAME, street_address, Phone, email) 
SELECT ID, NAME, address, Phone, NULL 
FROM TableC 

注意:如果email不爲空欄,然後代替NULL將兩個單引號''

+0

感謝您的回答,但我得到Undeclared變量:tableC。我使用create table tableC作爲選擇A. * -----。謝謝 – upagna

+0

另一個問題是,如果列名不同,我將如何更新從表C到表B的字段,你能否給出一個想法? – upagna

+0

基於來自TableC和TableB的任何常見ID? – Arulkumar