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

Jon*_* O. 111 mysql sql database

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

ggi*_*oux 175

INSERT INTO TARGET_TABLE SELECT * FROM SOURCE_TABLE;

编辑:或者如果表格具有不同的结构,您还可以:

INSERT INTO TARGET_TABLE (`col1`,`col2`) SELECT `col1`,`col2` FROM SOURCE_TABLE;
Run Code Online (Sandbox Code Playgroud)

编辑:约束这个..

INSERT INTO TARGET_TABLE (`col1_`,`col2_`) SELECT `col1`,`col2` FROM SOURCE_TABLE WHERE `foo`=1
Run Code Online (Sandbox Code Playgroud)


GSt*_*Sto 130

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

CREATE TABLE table2 LIKE table1;
Run Code Online (Sandbox Code Playgroud)

然后,复制数据:

INSERT INTO table2 SELECT * FROM table1
Run Code Online (Sandbox Code Playgroud)


Ike*_*ker 27

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

CREATE TABLE table2 LIKE table1;

SELECT * INTO OUTFILE '/tmp/table1.txt' FROM table1;
LOAD DATA INFILE '/tmp/table1.txt' INTO TABLE table2;
Run Code Online (Sandbox Code Playgroud)


Jas*_*son 13

这对我有用,

CREATE TABLE newtable LIKE oldtable;

使用旧表复制newtable

INSERT newtable SELECT * FROM oldtable;

将所有行数据复制到新表.

谢谢


Fra*_*ens 9

如果您想一次创建和复制内容,只需使用SELECT:

CREATE TABLE new_tbl SELECT*FROM orig_tbl;

  • +1 - 尽管新表将不具有第一个的索引定义."create ... like ..."方法也会复制索引定义. (4认同)