SQL中如何从两张表中创建一张表

Posted

技术标签:

【中文标题】SQL中如何从两张表中创建一张表【英文标题】:How to make one table from two tables in SQL 【发布时间】:2015-01-05 04:32:53 【问题描述】:

我在 mysql 中有两个表,我想将它们组合成一个大表。两个表具有完全相同的列(主索引id 列和snippet 列,它是一个字符串),但具有不同的数据。它们是从不同的 .csv 文件加载的,因为当不拆分文件时,文件太大而无法一次性上传到 phpMyAdmin。

现在,我想将这两个表合并为一个。

到目前为止,我在 *** 上找到的所有问题都是关于想要合并两个表的结果。

例如:将一些数据从一个表映射到另一个表。但我想物理合并这两个表,以便将它们存储为一个 SQL 表。

如何做到这一点?

【问题讨论】:

【参考方案1】:

给你的例子

CREATE TABLE new_table
  AS (SELECT * FROM first UNION ALL SELECT * FROM second);

【讨论】:

这个解决方案工作,只要我删除括号。但这可能只是 SQL 版本之间的区别。 (我不明白为什么括号会使其失败)。谢谢!【参考方案2】:

我可能建议您将第二个表格插入第一个表格:

insert into first
    select * from second;

这允许您保留有关第一个表的辅助信息——例如主键定义、索引、触发器和外键关系。

你可以做类似的事情:

create table newtable like first;

insert into newtable
    select * from first;

insert into newstable
    select * from second;

注意:通常我建议在使用insert 时使用列列表,但如果两个表确实具有完全相同的格式,那么这应该可以。

还要注意,两个表中主键之间的冲突可能会导致这些方法失败。

【讨论】:

以上是关于SQL中如何从两张表中创建一张表的主要内容,如果未能解决你的问题,请参考以下文章

如何用SQL语句查询两张表中的相同字段数据

SqlServer2008 如何判断一张表的数据不在另外两张表里且在该表中新建一列显示状态

怎样用Sql语句判断一张表中的两条数据相同

怎样用Sql语句判断一张表中的两条数据相同

如何用标准SQL语句给一张表中添加多个字段

如何连接两张表,用access?