mysql插入或选择 - 将列从tbl1复制到tbl2

时间:2014-06-16 17:16:34

标签: mysql sql insert-into select-into

所以我在同一个数据库中有2个MySQL表,其中包含以下列(所有这些都是非空的):

tbl1 :( url,urlkey,domain,created,8 more columns ..)

tbl2 :( url,urlkey,canonical)

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

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

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

有没有人知道如何针对我所处的特定情况这样做?请让我知道,谢谢大家

- 内森

2 个答案:

答案 0 :(得分:2)

首先,您需要将新列添加到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

答案 1 :(得分:1)

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