比较 2 个不同数据库中 2 个表的行

Compare the rows of 2 tables in 2 different databases

本文关键字:比较 数据库      更新时间:2023-10-16

我有2个不同的数据库。两者都有一张叫水果的桌子。现在,我想相对于第一个数据库更新第二个数据库。为此,我按第一个数据库中的所有列值(ID 列除外)将每一行与第二个数据库中的每一行进行比较,并得到那些存在差异的行。我正在使用的查询是

SELECT A.* FROM db1.Fruit A 
           Left Outer Join Fruit B ON 
           (A.Ratings = B.Ratings  AND A.Name = B.Name  AND A.Color = B.Color) 
where B.Ratings  IS NULL OR B.Name  IS NULL OR B.Color  IS NULL

第一个数据库中的表第二个数据库中的表。

现在在结果中,它应该显示 ID 为 3 的行,其中名称为 Kiwi,颜色为绿色。但它也显示了ID 为 4 且名为 Banana 的行,因为其他列为 null,在我的查询中,我正在编写如果B.Ratings IS NULL or B.Color IS NULL返回该行。

那么有没有其他方法可以通过所有列(ID 列除外)将表 1 的 1 行与表 2 的 1 行进行比较,并返回任何列值不匹配的行?

我一直很困惑:)编辑:我回到我最初的反应

SELECT A.* 
FROM db1.Fruit as A JOIN db2.Fruit as B ON 
(A.Name = B.Name  AND A.Color = B.Color )
WHERE A.Rating <> B.Rating 

LEFT OUTER JOIN会给出左侧带有 Null 的行(您将看到它的右侧部分);这不是您想要做的(至少这是我目前的理解)。此语句将为您提供:db1 上的信息,这些信息与 db2 中的名称和颜色相同,但评级不同(我认为这是您想要获得的)。如果要更改列的组合,则必须更改联接。