mysql insert into 或 select into - 将列从 tbl1 复制到 tbl2

Posted

技术标签:

【中文标题】mysql insert into 或 select into - 将列从 tbl1 复制到 tbl2【英文标题】:mysql insert into or select into - copy column from tbl1 into tbl2 【发布时间】:2014-06-16 17:16:33 【问题描述】:

所以我在同一个数据库中有 2 个 mysql 表,其中包含以下列(所有这些都不是 NULL):

tbl1: (url, urlkey, domain, created, 8 列..)

tbl2: (url, urlkey, canonical)

这两个表现在都有 100,000 行 - 它们对应于相同的 url、urlkey 值(甚至以相同的顺序插入)。

我要做的是: 将域列从 tbl1 复制到 tbl2 中,并将所有关联的域行值从 tbl1 复制。因此,在此之后,tbl2 应该看起来像: (url, urlkey, canonical, domain) 并且每行中的 url、urlkey、域值应该与 tbl1 相同。

我尝试了一些涉及 SELECT INTO 和 INSERT INTO 的操作,但没有一个成功地将域列的行值复制到 tbl2 中。

有人知道如何针对我所处的特殊情况执行此操作吗?请告诉我,谢谢大家

-- 内森

【问题讨论】:

【参考方案1】:

首先您需要将新列添加到tbl2

ALTER TABLE tbl2 ADD domain char(100) //or whatever the type is

然后你需要像这样填充它:

UPDATE tbl2
JOIN tbl1 ON tbl1.url = tbl2.url AND tbl1.urlkey = tbl2.urlkey
SET tbl2.DOMAIN = tbl1.DOMAIN

【讨论】:

【参考方案2】:
CREATE TABLE temp(SELECT * FROM tbl2);  
ALTER TABLE tbl2 ADD COLUMN domain char(10);  
TRUNCATE tbl2;  
INSERT INTO tbl2 SELECT url,urlkey,domain, temp.canonical FROM tbl1 JOIN temp  
                                      ON tbl1.urlkey = temp.urlkey

【讨论】:

以上是关于mysql insert into 或 select into - 将列从 tbl1 复制到 tbl2的主要内容,如果未能解决你的问题,请参考以下文章

mysql中的replace into和insert into的效率问题

MySQL--INSERT INTO ... ON DUPLICATE KEY UPDATE ...

使用 INSERT INTO 时出现 MySQL 错误 2002

MySQL的insert ignore与replace into不同

MySQL中REPLACE INTO和INSERT INTO的区别分析

oracle SELECT INTO 和 INSERT INTO SELECT 两种表复制语句详解