在 MySQL 中,如何将一个表的内容复制到同一数据库中的另一个表?

我是 MySQL 的新手。我希望将一个表的内容复制到同一数据库中的另一个表中。基本上,我希望从另一个表插入到一个表中。有什么简单的方法吗?

145863 次浏览

如果表格具有相同的结构:

INSERT INTO TARGET_TABLE SELECT * FROM SOURCE_TABLE;

如果表格有不同的结构:

INSERT INTO TARGET_TABLE (`col1`,`col2`) SELECT `col1`,`col2` FROM SOURCE_TABLE;

还可以添加条件:

INSERT INTO TARGET_TABLE (`col1_`,`col2_`) SELECT `col1`,`col2` FROM SOURCE_TABLE WHERE `foo`=1

如果表不存在,您可以创建一个具有相同模式的表,如下所示:

CREATE TABLE table2 LIKE table1;

然后,复制数据:

INSERT INTO table2 SELECT * FROM table1

如果 table1很大,并且您不希望在复制过程期间锁定它,那么您可以执行转储和加载:

CREATE TABLE table2 LIKE table1;


SELECT * INTO OUTFILE '/tmp/table1.txt' FROM table1;
LOAD DATA INFILE '/tmp/table1.txt' INTO TABLE table2;

如果你想在一个镜头中创建和复制内容,只需使用 SELECT:

CREATE TABLE new_tbl SELECT * FROM orig_tbl;

试试这个,在我的 Oracle 10g 中很管用,

CREATE TABLE new_table
AS (SELECT * FROM old_table);

您可以使用 WHERE 和 LIMIT 子句使 SELECT 语句更加复杂。

首先复制大表(不包含数据) ,运行以下查询,然后截断大表。

INSERT INTO table_small (SELECT * FROM table_large WHERE column = 'value' LIMIT 100)

超级简单: -)

这招对我很管用,

CREATE TABLE newtable LIKE oldtable;

使用旧表复制新表

INSERT newtable SELECT * FROM oldtable;

将所有行数据复制到新表中。

CREATE TABLE target_table SELECT * FROM source_table;

它只是创建一个结构与源表相同的新表,并且将 source _ table 中的所有行复制到 target _ table 中。

CREATE TABLE target_table SELECT * FROM source_table WHERE condition;

如果需要将一些行复制到 target _ table 中,那么在 哪里子句中应用一个条件