【问题标题】:Matching two databases and insert same rows to another匹配两个数据库并将相同的行插入另一个
【发布时间】:2012-08-01 18:21:15
【问题描述】:

我有 2 个名为 DB1 和 DB2 的数据库以及一个名为 movies 的表。 movie 包含 movie_nameyearsynopsisAKA 等。如您所见,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

我能做什么? 谢谢!

【问题讨论】:

  • DB1 和 DB2 真的是 TABLES 和这些表上的电影名称、年份、概要、AKA 字段吗?你的术语没有意义。
  • 你是对的,迈克。我无法完全解释。在不同的数据库上有表。
  • 它们是同一服务器上的不同数据库吗?
  • 是的,同一服务器上的不同数据库。

标签: mysql sql database merge


【解决方案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 中的表的表名,所以我分别称它们为 table1 和 table2。

【讨论】:

  • 谢谢。但我有同名的电影。我想使用“年份”表进行匹配。
  • 我已经更新了原始答案,以反映电影名称和年份的加入。
【解决方案2】:

(我将假设每个数据库中的表都称为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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-10
    • 2022-09-26
    • 1970-01-01
    • 2020-03-11
    • 1970-01-01
    • 1970-01-01
    • 2015-10-27
    • 1970-01-01
    相关资源
    最近更新 更多