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