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不同