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

时间:2010-02-26 17:50:08

标签: sql mysql database

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

8 个答案:

答案 0 :(得分:170)

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

答案 1 :(得分:127)

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

CREATE TABLE table2 LIKE table1;

然后,复制数据:

INSERT INTO table2 SELECT * FROM table1

答案 2 :(得分:26)

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

CREATE TABLE table2 LIKE table1;

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

答案 3 :(得分:9)

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

  

CREATE TABLE new_tbl SELECT * FROM orig_tbl;

答案 4 :(得分:8)

这对我有用,

CREATE TABLE newtable LIKE oldtable;

使用旧表格复制newtable

INSERT newtable SELECT * FROM oldtable;

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

谢谢

答案 5 :(得分:0)

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

首先复制你的大表(没有数据),运行以下查询,然后截断更大的表。

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

超级简单。 : - )

答案 6 :(得分:0)

DeciderResult80211::getSnr

它只是创建一个与源表具有相同结构的新表,还将所有行从source_table复制到target_table。

CREATE TABLE target_table SELECT * FROM source_table;

如果您需要将某些行复制到target_table中,请在 where 子句

中应用条件

答案 7 :(得分:-4)

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

CREATE TABLE new_table
  AS (SELECT * FROM old_table);