2012-08-03 96 views
0

我有兩個名爲DB1和DB2的數據庫,其中有一個名爲movies的表。 movie包含movie_name,year,synopsis,AKA等。您可以看到synopsisAKA列爲空。我想匹配兩列(movie_nameyear),並將相同的結果插入到DB1的空列中。匹配兩個數據庫並將相同的行插入到另一個

DB1.movi​​es

movie_name | year | synopsis | AKA 
---------------------------------------- 
titanic | 1997 |   | 
matrix  | 1999 |   | 
alien  | 1979 |   | 

DB2.movi​​es

movie_name | year | synopsis | AKA 
---------------------------------------- 
titanic | 1997 | xxxxxxx | XXX 
matrix  | 1999 | yyyyyyy | YYY 
alien  | 1979 | zzzzzzz | ZZZ 

此後,DB1.movi​​es應該是這樣的:

DB1.movi​​es

movie_name | year | synopsis | AKA 
---------------------------------------- 
titanic | 1997 | xxxxxxx | XXX 
matrix  | 1999 | yyyyyyy | YYY 
alien  | 1979 | zzzzzzz | ZZZ 

我該怎麼辦? 謝謝!

+4

DB1和DB2真的是表和那些表上的movie_name,year,synopsis,AKA字段?你的術語沒有意義。 – 2012-08-03 17:06:27

+0

你是對的Mike。我無法完全解釋。有不同數據庫中的表格。 – 2012-08-03 17:09:47

+0

它們在同一臺服務器上有不同的數據庫嗎? – 2012-08-03 17:12:29

回答

1

這應該做的伎倆:

UPDATE db1.table1 JOIN db2.table2 on db1.table1.movie_name = db2.table2.movie_name AND db1.table1.year = db2.table2.year SET db1.table1.synopsis = db2.table2.synopsis, db1.table2.AKA = db2.table2.AKA 

注意,我不知道在DB1和DB2表的表名,所以我只是分別被稱爲他們Table 1和表2。

+0

謝謝。但我有同名電影。我想要使​​用「年」表進行匹配。 – 2012-08-03 17:25:54

+0

我已經更新了原始答案,以反映現在正在通過電影名稱和年份進行的聯合。 – 2012-08-03 17:27:55

1

(我要去假設表被稱爲在每個數據庫movies。)

如果你想在DB2電影(以及表在兩個數據庫中已經匹配的主鍵),替換數據,那麼你就可以做到以下幾點:

replace into db1.movies select * from db2.movies 

如果你只是想更新現有行內synonpsisAKA領域,這樣做:

update db1.movies mov1, db2.movies mov2 
    set mov1.synopsis = mov2.synopsis, 
     mov1.AKA  = mov2.AKA 
where mov1.movie_name = mov2.movie_name 
相關問題