Mysql 创建表作为select with join

Mysql 创建表作为select with join,mysql,Mysql,我需要使用表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 1

我需要使用表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
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
我使用此查询从表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 address       Phone    email
1  xyz         street       1234566  xyz@gmail.com
2  xyz         street       1234566
3  xyz         street       1234566
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中的所有数据。

使用
SELECT*插入到
中将对您的情况有所帮助。无需创建表架构。 它会自动创建表以及给定列的数据类型

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

注意:如果
电子邮件
列不为空,则将
改为两个单引号
'

谢谢您的回答,但我得到了未声明的变量:tableC。我使用CREATETABLETABLEC作为选择表。谢谢,另一个问题是,如果列名称不同,我将如何将表C中的字段更新到表B中,您能给出一个想法吗?基于表C和表B中的任何常见ID?更新我的问题,请检查更新的问题