我是MySQL新手。我想将一个表的内容复制到同一个数据库中的另一个表。基本上,我想从另一个表插入一个表。这样做有简单的方法吗?
答案 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);