【问题标题】:How to copy data from one table to another new table in MySQL?如何将数据从一个表复制到 MySQL 中的另一个新表?
【发布时间】:2011-11-20 21:34:27
【问题描述】:

我想在 MySQL 中将数据从一个表复制到另一个表。

表1(现有表):

aid    
st_id
from_uid
to_gid
to_uid
created
changed
subject
message
link

表 2(新表)

st_id
uid
changed
status
assign_status

我想将表 1 中的一些数据字段复制到表 2 中。

这可以使用 MySQL 查询来完成吗?

【问题讨论】:

  • 这是一次性工作还是您打算定期进行?
  • @@jdias: 到现在为止都是一次性工作..
  • @jdias 澄清一下,如果这不是一次性的工作,那么 MySQL 新手应该考虑做什么?
  • 可能会查看以避免重复数据。

标签: mysql copy


【解决方案1】:

这会做你想做的事:

INSERT INTO table2 (st_id,uid,changed,status,assign_status)
SELECT st_id,from_uid,now(),'Pending','Assigned'
FROM table1

如果您想包含 table1 中的所有行。否则,如果您只想添加 table1 的子集,则可以在末尾添加 WHERE 语句。

我希望这会有所帮助。

【讨论】:

  • 太好了,很高兴看到这与我在 T-SQL 中习惯的一样。
  • 如果要复制所有 table1 数据,则必须在复制 @SANDEEP 之前创建新 table2
【解决方案2】:

如果你不想列出字段,并且表的结构是一样的,你可以这样做:

INSERT INTO `table2` SELECT * FROM `table1`;

或者如果你想创建一个具有相同结构的新表:

CREATE TABLE new_tbl [AS] SELECT * FROM orig_tbl;

Reference for insert select; Reference for create table select

【讨论】:

  • 为什么[AS]在方括号里,AS在这里做了什么
  • 表示该词是可选的。之所以这样写,是因为我从文档中复制和粘贴;它没有添加任何东西。我认为AS 在其他 SQL 方言中是强制性的。
  • 括号应该被移除以执行任务
【解决方案3】:

您可以轻松地从另一个表中获取数据。你必须只添加你想要的字段。

mysql查询是:

INSERT INTO table_name1(fields you want)
  SELECT fields you want FROM table_name2


其中,值从 table2 复制到 table1

【讨论】:

    【解决方案4】:
    CREATE TABLE newTable LIKE oldTable;
    

    然后,复制数据

    INSERT INTO newTable SELECT * FROM oldTable;
    

    【讨论】:

      【解决方案5】:

      最好的选择是在 mysql 中使用 INSERT...SELECT 语句。

      http://dev.mysql.com/doc/refman/5.0/en/insert-select.html

      【讨论】:

      • 直观 :) 我喜欢它。这是一个普通的 SELECT 语句,前面有一行“INSERT INTO”。
      【解决方案6】:
      SELECT *
      INTO newtable [IN externaldb]
      FROM table1;
      

      http://www.w3schools.com/sql/sql_select_into.asp

      【讨论】:

      • 不起作用。根据the docs,“MySQL 服务器不支持 SELECT ... INTO TABLE Sybase SQL 扩展”
      【解决方案7】:
      INSERT INTO Table1(Column1,Column2..) SELECT Column1,Column2.. FROM Table2 [WHERE <condition>]
      

      【讨论】:

      • 虽然这段代码可能会回答这个问题,但最好解释一下它是如何解决问题的以及为什么要使用它。从长远来看,纯代码的答案没有用处。
      【解决方案8】:

      你应该先创建table2。

      插入 table2(field1,field2,...) 选择字段 1、字段 2、.... 从表 1 条件;

      【讨论】:

        【解决方案9】:

        你可以试试这个代码

        insert into #temp 
        select Product_ID,Max(Grand_Total) AS 'Sales_Amt', Max(Rec_Amount) ,'',''
        from Table_Name group by Id
        

        【讨论】:

          【解决方案10】:

          上述查询仅在我们创建了包含客户列匹配的客户表时才有效

          INSERT INTO clients(c_id,name,address)SELECT c_id,name,address FROM customer
          

          【讨论】:

            【解决方案11】:

            如果表存在。你可以试试 插入 table_name select * from old_tale;

            如果表不存在。你应该试试 像 old_table 一样创建表 table_name; 插入 table_name select * from old_tale;

            【讨论】:

              猜你喜欢
              • 2011-11-21
              • 1970-01-01
              • 2011-04-25
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2010-11-20
              相关资源
              最近更新 更多