加入收藏 | 设为首页 | 会员中心 | 我要投稿 温州站长网 (https://www.0577zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

T-SQL查询进阶:深入理解子查询

发布时间:2016-10-02 16:27:37 所属栏目:MsSql教程 来源:站长网
导读:副标题#e# 引言 SQL有着非常强大且灵活的查询方式,而多表连接操作往往也可以用子查询进行替代,本篇文章将会讲述子查询的方方面面。 简介 子查询本质上是嵌套进其他SELECT,UPDATE,INSERT,DELETE语句的一个被限制的SELECT语句,在子查询中,只有下面几个子句

子查询作为计算列使用

当子查询作为计算列使用时,只返回单个值(Scalar) 。用在SELECT语句之后,作为计算列使用。同样分为相关子查询和无关子查询

相关子查询的例子比如:我想取得每件产品的名称和总共的销量

SELECT [Name],
      (SELECTCOUNT(*) FROM AdventureWorks.Sales.SalesOrderDetail S
      WHERE S.ProductID=P.ProductID) AS SalesAmount
FROM [AdventureWorks].[Production].[Product] P
  

部分结果如下:

5

当子查询作为计算列使用时,会针对外部查询的每一行,返回唯一的值。

同样的,SQL子查询都可以使用其他语句达到同样的效果,上面的语句和如下语句达到同样的效果:

SELECT P.Name,COUNT(S.ProductID)
FROM [AdventureWorks].[Production].[Product] P 
LEFTJOIN  AdventureWorks.Sales.SalesOrderDetail S
ON S.ProductID=P.ProductID
GROUPBY P.Name
  

子查询作为计算列且作为无关子查询时使用,只会一次性返回但一值,这里就不再阐述了。

小结

本篇文章通过子查询的三种不同用途来阐述子查询。同时,所有的子查询还可以分为相关子查询和无关子查询,而子查询所实现的功能都可以使用连接或者其他方式实现。但一个好的作家应该是掌握丰富的词汇,而不是仅仅能表达出自己的意思。学会多种SQL查询方式是学习SQL查询必经之路。

From:cnblogs 宋沄剑

(编辑:温州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读