我还是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中,并且没有可见性确切地说。
提前谢谢!
答案 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)RIGHT JOIN
用于相反的FULL OUTER JOIN
强制执行两个表的所有行,如果没有相应的行,则两边都有NULL。