SqlServer2008实例07从多个数据源查询

 

目录

1.使用内联结

2.使用外联结

3.使用交叉联结

4.在同一查询中多次引用同一个表

5.使用衍生表

6.使用UNION组合结果集


JOIN关键字能让我们将多个表和/或视图中的数据组合到一个结果集中。它将一列或多列从一个表联结到另外一个表,计算它们是否匹配。
    使用JOIN关键字,可以根据联结条件来联结两个表。大多数情况下,你会看到有一个联结条件来测试一个表中的一列和第二个表中的另外一列相比是否相等(相联结的列不需要有相同的名字,只需要有可兼容的数据类型)。

      作为查询性能的最佳实践,尽量避免在JOIN子句中转换列的数据类型(例如使用CONVERT或CAST).最好是修改底层的架构来匹配数据类型(或者预先在单独的表、临时表、表变量或者公共表表达式( CTE)中进行数据转换)。在频繁执行的查询中进行隐式数据类型转换会引发明显的性能问题(例如,将nchar转换为char)。

     SQL Server的联结类型有3种:内联结、外联结和交叉联结。

  •      内联结使用INNliR JOIN关键字。INNER JOIN通过匹配两个表中共同的值进行操作。只有满足联结条件的行才会用来构建结果集。INNER JOIN是默认的JOIN类型,因此如果你喜欢,可以在INNER JOJN操作中仅使用JOIN关键字。
  •      外联结有3种联结类型:LEFT OUTER、RIGHT OUTER和FULL OUTER联结。LEFT OUTER和RIGHT OUTER联结与INNER JOlhl相似,都是返回匹配联结条件的行。不过和INNER JOIN不同的是,LEFT OUTER JOIN返回联结对中第一个表不匹配的行,而RIGHT OUTER JOIN返回联结对中第二个表不匹配的行。FULL OUTERJOIN子句返回左表和右表都不匹配的行。
  •      一个不常使用的联结类型是交叉联结CROSS JOIN。当没有使用WHERE子句的时候,一个CROSS JOIN返回一个笛卡尔积(cartersian product)。笛卡尔积根据左表中的行乘以右表中的行的每一种可能的组 合产生结果集。例如,如果Stores表有7行,Sales表有22行,那么在查询结果中你会获取154行(7乘22),显示出行的每一种可能的组合。

1.使用内联结

SELECT p.Name,s.DiscountPct
FROM Sales.SpecialOffer s
INNER JOIN Sales.SpecialOfferProduct o ON
           s.SpecialOfferID=o.SpecialOfferID
INNER JOIN Production.Product p ON
           o.ProductID=p.ProductID
WHERE p.Name='
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ngbshzhn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值