Mysql 匹配两个数据库并将相同的行插入另一个数据库
我有两个名为DB1和DB2的数据库,其中有一个名为Mysql 匹配两个数据库并将相同的行插入另一个数据库,mysql,sql,database,merge,Mysql,Sql,Database,Merge,我有两个名为DB1和DB2的数据库,其中有一个名为movies的表电影包含电影名称,年份,剧情简介,AKA等。您可以看到剧情简介和AKA列为空。我想匹配两列(movie\u name和year),并在DB1的空列中插入相同的结果 DB1.电影 movie_name | year | synopsis | AKA ---------------------------------------- titanic | 1997 | | matrix | 1999 |
movies
的表<代码>电影包含电影名称
,年份
,剧情简介
,AKA
等。您可以看到剧情简介
和AKA
列为空。我想匹配两列(movie\u name
和year
),并在DB1的空列中插入相同的结果
DB1.电影
movie_name | year | synopsis | AKA
----------------------------------------
titanic | 1997 | |
matrix | 1999 | |
alien | 1979 | |
movie_name | year | synopsis | AKA
----------------------------------------
titanic | 1997 | xxxxxxx | XXX
matrix | 1999 | yyyyyyy | YYY
alien | 1979 | zzzzzzz | ZZZ
movie_name | year | synopsis | AKA
----------------------------------------
titanic | 1997 | xxxxxxx | XXX
matrix | 1999 | yyyyyyy | YYY
alien | 1979 | zzzzzzz | ZZZ
DB2.movies
movie_name | year | synopsis | AKA
----------------------------------------
titanic | 1997 | |
matrix | 1999 | |
alien | 1979 | |
movie_name | year | synopsis | AKA
----------------------------------------
titanic | 1997 | xxxxxxx | XXX
matrix | 1999 | yyyyyyy | YYY
alien | 1979 | zzzzzzz | ZZZ
movie_name | year | synopsis | AKA
----------------------------------------
titanic | 1997 | xxxxxxx | XXX
matrix | 1999 | yyyyyyy | YYY
alien | 1979 | zzzzzzz | ZZZ
之后,DB1.movies应该如下所示:
DB1.电影
movie_name | year | synopsis | AKA
----------------------------------------
titanic | 1997 | |
matrix | 1999 | |
alien | 1979 | |
movie_name | year | synopsis | AKA
----------------------------------------
titanic | 1997 | xxxxxxx | XXX
matrix | 1999 | yyyyyyy | YYY
alien | 1979 | zzzzzzz | ZZZ
movie_name | year | synopsis | AKA
----------------------------------------
titanic | 1997 | xxxxxxx | XXX
matrix | 1999 | yyyyyyy | YYY
alien | 1979 | zzzzzzz | ZZZ
我能做什么?
谢谢 这应该可以做到:
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中的表的表名,所以我分别称它们为table1和table2。(我假设每个数据库中的表都称为movies
)
如果希望在DB2中用电影替换数据(两个数据库中的表都有匹配的主键),则可以执行以下操作:
replace into db1.movies select * from db2.movies
如果只想更新现有行中的synonpsis
和AKA
字段,请执行以下操作:
update db1.movies mov1, db2.movies mov2
set mov1.synopsis = mov2.synopsis,
mov1.AKA = mov2.AKA
where mov1.movie_name = mov2.movie_name
DB1和DB2真的是表和表上的名称、年份、概要、AKA字段吗?你的术语没有道理,你说得对,迈克。我无法完全解释。不同的数据库上有表。同一台服务器上有不同的数据库吗?是的,同一台服务器上有不同的数据库。谢谢。但我有同名的电影。我想使用“年份”表进行匹配。我已经更新了原始答案,以反映现在电影名称和年份之间的连接。