使用或不使用数据将某些字段从一个表复制到另一个表中

时间:2014-06-07 20:02:41

标签: mysql

我正在寻找几个小时但没有找到一个好的答案,有人可以帮助我在MySQL中这样做:

  1. 如何将表-1的结构和数据复制到表-2中,如表-1和表-2所示: -

  2. 如何在没有任何数据的情况下将Table-1的结构复制到表-2中。

    [Table-1  Store_Information]
    Store_Name  Sales   Txn_Date
    Los Angeles 1500    Jan-05-1999
    San Diego   250     Jan-07-1999
    Los Angeles 300     Jan-08-1999
    Boston      700     Jan-08-1999
    
    [Table-2  Geography]
    Region_Name Store_Name
    East        Boston
    East        New York
    West        Los Angeles
    West        San Diego
    
  3. 我也尝试过在其他线程上找到的一些例子,例如

    SELECT column_name1,column_name2,..
    INTO new_table
    FROM table_name;
    

    INSERT INTO table2
    column1, column2..
    SELECT column1, column2, ..
    FROM table1;
    

    我从这些链接中找到的两个查询: - http://blog.ubiq.co/copy-data-into-new-table-mysql/
    http://blog.ubiq.co/insert-data-from-one-table-into-another-mysql/
    但似乎没有任何效果。 第一个查询不起作用,因为MySQL不支持SELECT INTO。 如果table2中有一列,那么insert语句将起作用。所以主要问题是如何将一些列从一个表复制到另一个表。只是结构,而不是数据。

    我正在使用MySQL。数据库是相同的。两个表都在同一个数据库中。这两个表都已存在于数据库中。

    请帮我这样做。

1 个答案:

答案 0 :(得分:2)

要复制没有数据的结构,您可以使用LIKE选项CREATE TABLE

CREATE TABLE table2 LIKE table1;

然后,您可以使用以下内容复制所有数据:

INSERT INTO table2
SELECT * FROM table1

如果要复制某些列及其数据,可以执行以下操作:

CREATE TABLE table2
SELECT col1, col2, col3, ...
FROM table1

这只会复制数据类型,不会复制像auto_increment这样的索引和选项。

要复制一些没有任何数据的列,可以使用上面的过程,但是WHERE子句不选择任何行:

CREATE TABLE table2
SELECT col1, col2, col3, ...
FROM table1
WHERE 1 = 0