如何用SQL合并多表?求生成Table D与Table E的SQL语句
对应的SQL语句示例
先说明:假设三个表(Table A、Table B、Table C)的结构完全一致,且有唯一关联键(比如id),以下是两种常见场景的SQL写法:
1. 生成Table D
根据你描述的需求,这里分两种可能的理解给出写法:
场景1:Table D包含Table A的全部记录,以及Table B、Table C中与Table A存在共同记录的部分(去重)
因为Table A本身已经包含和B、C的共同记录,用UNION自动去重即可:
CREATE TABLE Table_D AS SELECT * FROM Table_A UNION SELECT * FROM Table_B WHERE id IN (SELECT id FROM Table_A) UNION SELECT * FROM Table_C WHERE id IN (SELECT id FROM Table_A);
场景2:Table D是Table A的全部记录,同时关联Table B、Table C的匹配记录(保留关联结构)
如果需要把A和B、C的匹配字段合并展示(结构会包含A、B、C的所有列):
CREATE TABLE Table_D AS SELECT a.*, b.*, c.* FROM Table_A a LEFT JOIN Table_B b ON a.id = b.id LEFT JOIN Table_C c ON a.id = c.id;
2. 生成Table E
合并Table B和Table C,分两种情况:
- 去重合并(自动剔除重复记录):
CREATE TABLE Table_E AS SELECT * FROM Table_B UNION SELECT * FROM Table_C;
- 保留所有记录(包括重复项):
CREATE TABLE Table_E AS SELECT * FROM Table_B UNION ALL SELECT * FROM Table_C;
注意:如果你的表结构不一致,或者关联键不是
id,只需要替换对应的字段名和关联条件即可。
内容的提问来源于stack exchange,提问作者mogambo
相关产品推荐
相关产品推荐

