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

我是MySQL的新手。 我想将一个表的内容复制到同一个数据库中的另一个表。 基本上,我想插入从另一个表中的表。 有没有简单的方法来做到这一点?

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 

如果表不存在,则可以使用相同的模式创build一个,如下所示:

 CREATE TABLE table2 LIKE table1; 

然后,要复制数据:

 INSERT INTO table2 SELECT * FROM table1 

如果table1很大,而且您不想在复制过程中locking它,则可以执行dump-and-load:

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

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

CREATE TABLE new_tbl SELECT * FROM orig_tbl;

这对我有用,

CREATE TABLE newtable LIKE oldtable;

用旧表复制newtable

INSERT newtable SELECT * FROM oldtable ;

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

谢谢

这对我有效。 您可以使SELECT语句更加复杂,使用WHERE和LIMIT子句。

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

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

超级简单。 🙂

尝试这个。 在我的Oracle 10g中运行良好,

 CREATE TABLE new_table AS (SELECT * FROM old_table);