比较SQL表

时间:2016-12-20 09:48:39

标签: sql-server

我还是SQL新手。我目前在SQL服务器中有两个表,我想不完全比较,但更有可能看到表1中的一个特定列是否等于表2中的类似特定列。我有一定程度的成功,但我我还希望看到表1与表2不匹配的那些(例如,它可以返回空值)。下面你可以看到一个示例代码,它可能有助于更好地理解我的观点:

select tb1.models, tb1.year, tb1.series, tb2.model, tb.price
from tb1, tb2
where tb1.year = '2014' and tb1.models = tb2.model

这就是我尝试了各种组合的地方,例如<>等等,但遗憾的是还没有找到解决方案。关键是在表1中我有一定数量的模型,在表2中我有相当大的列表,有时不包括表1中的相同。由于我想看到什么不完全匹配所以我可以尝试检查和分析它。

我上面显示的示例仅返回相同的示例,我看到表1中还有30多个模型,但它们不在表2中,并且没有可见性确切地说。

提前谢谢!

1 个答案:

答案 0 :(得分:1)

顺便说一下:如果此值(以及列'2014')是数字(可能是tb1.year),请不要使用INT。而是使用tb1.year=2014。隐性演员阵容很贵,可能会产生各种副作用......

这听起来像一个简单的连接:

select tb1.models
     , tb1.year
     , tb1.series
     , tb2.model
     , tb.price
from tb1
INNER JOIN tb2 ON tb1.models = tb2.model
where tb1.year = '2014'

但您的model*s*modell可能会导致数据未标准化的问题...如果这样做无效,请提供样本数据和预期输出!

更新

  • 使用LEFT JOIN从tb1中查找所有行(tb2中没有相应行的行获取NULL)
  • USE RIGHT JOIN用于相反的
  • USE FULL OUTER JOIN强制执行两个表的所有行,如果没有相应的行,则两边都有NULL。