如何将数据从一个表复制到 MySQL 中的另一个新表?

Posted

技术标签:

【中文标题】如何将数据从一个表复制到 MySQL 中的另一个新表?【英文标题】:How to copy data from one table to another new table in 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 新手应该考虑做什么? 可能会查看以避免重复数据。 Copy data into another table的可能重复 【参考方案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;

【讨论】:

以上是关于如何将数据从一个表复制到 MySQL 中的另一个新表?的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

如何将数据从一个表复制到位于不同 Redshift 实例中的另一个表?

转换后将数据从一列复制到同一表中的另一列

如何将约束添加到 MYSQL 中的列仅以保存已存在于同一表的另一列中的值? [复制]