我需要在表A和表B之间创建包含所有不匹配id的表。这两个表都有一些匹配的字段,但我只需要表A中的所有列
表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 xyz@gmail.com
2 xyz street 1234566
3 xyz street 1234566
结果表 - 表C
ID NAME address Phone
12 xyz some street 1234566
22 xyz some street 1234566
我正在使用此查询来获取表A中所有未匹配的值
select * from A left join B on A.ID=B.ID where B.ID is null
这给了我表A和表B中的所有字段。如何创建表C,使其只有表A中不匹配的值和字段。
使用表C更新表B
表B
ID Vendor_NAME street_address Phone email
1 xyz street 1234566 xyz@gmail.com
2 xyz street 1234566
3 xyz street 1234566
表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 xyz@gmail.com
2 xyz street 1234566
3 xyz street 1234566
12 xyz some street 1234566
22 xyz some street 1234566
表B具有相同的数据,但具有不同的列名,并且几乎没有额外的列。我想插入表C表B中的所有数据。
答案 0 :(得分:1)
使用SELECT * INTO
会对您的情况有所帮助。无需创建表模式。
它会自动创建表以及列的数据类型
CREATE Table TableC as SELECT A.*
FROM TableA
LEFT JOIN TableB ON A.ID = B.ID
WHERE B.ID IS NULL
根据OP的新请求更新答案:
INSERT INTO TableB (ID, Vendor_NAME, street_address, Phone, email)
SELECT ID, NAME, address, Phone, NULL
FROM TableC
注意:如果email
不是空列,则代替NULL
放置两个单引号''