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

时间:2016-07-13 09:02:35

标签: c++ sqlite

我有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

Table in the first database Table in the second database

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

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

1 个答案:

答案 0 :(得分:0)

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

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具有相同名称和颜色的信息,但评级不同(我认为这是您想要的)。 如果要更改列组合,则必须更改连接。