最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

sqlserver技术内幕<二>表运算符之apply

来源:动视网 责编:小采 时间:2020-11-09 07:54:54
文档

sqlserver技术内幕<二>表运算符之apply

sqlserver技术内幕<二>表运算符之apply:SQL SERVER 2005新增了APPLY运算符。该运算符有些类于表连接(JOIN),但是功能却有不同。APPLY的右表表达式可以引用左输入中的列。在JOIN运算的时候,连接的2个表之间没有优先级,但是使用APPLY时,就像先计算左表输入,然后为左输入中的每一行计算一次右输
推荐度:
导读sqlserver技术内幕<二>表运算符之apply:SQL SERVER 2005新增了APPLY运算符。该运算符有些类于表连接(JOIN),但是功能却有不同。APPLY的右表表达式可以引用左输入中的列。在JOIN运算的时候,连接的2个表之间没有优先级,但是使用APPLY时,就像先计算左表输入,然后为左输入中的每一行计算一次右输


SQL SERVER 2005新增了APPLY运算符。该运算符有些类于表连接(JOIN),但是功能却有不同。APPLY的右表表达式可以引用左输入中的列。在JOIN运算的时候,连接的2个表之间没有优先级,但是使用APPLY时,就像先计算左表输入,然后为左输入中的每一行计算一次右输

SQL SERVER 2005新增了APPLY运算符。该运算符有些类似于表连接(JOIN),但是功能却有不同。APPLY的右表表达式可以引用左输入中的列。在JOIN运算的时候,连接的2个表之间没有优先级,但是使用APPLY时,就像先计算左表输入,然后为左输入中的每一行计算一次右输入。

APPLY分为CROSS APPLY和OUTER APPLY。CROSS APPLY的外部(左)行应用内部(右)表表达式时返回空集,则不返回该行,这个有点类似于INNER JOIN。而OUTER APPLY将返回该行,并且该行的内表表达式的属性是NULL,类似于OUTER JOIN。

例如以下的代码是查询每个客户最新的2个订单。运用了CROSS APPLY运算符,在右部的计算中可以使用左部计算的结果,但是APPLY需要最终取个别名(CA),这点很让人困惑,也许是SQL SERVER内部解析器的需要。

SELECT C.customerid, city, orderid
FROM dbo.Customers AS C
CROSS APPLY
(SELECT TOP(2) orderid, customerid
FROM dbo.Orders AS O
WHERE O.customerid = C.customerid
ORDER BY orderid DESC) AS CA;

以上查询的结果如下:

customerid city orderid

Gerrard Liverpool 2

Gerrard Liverpool 1

Suarez Liverpool 5

Suarez Liverpool 4

Casillas Madrid 6

在以上的查询中,如果客户Carragher没有订单,则不会出现Carragher的记录,因为使用的是CROSS APPLY。如果想返回没有订单的客户,需要使用OUTER APPLY。

SELECT C.customerid, city, orderid
FROM dbo.Customers AS C
OUTER APPLY
(SELECT TOP(2) orderid, customerid
FROM dbo.Orders AS O
WHERE O.customerid = C.customerid
ORDER BY orderid DESC) AS CA;

查询的结果如下:

customerid city orderid

Carragher Liverpool NULL

Gerrard Liverpool 2

Gerrard Liverpool 1

Suarez Liverpool 5

Suarez Liverpool 4

Casillas Madrid 6

文档

sqlserver技术内幕&lt;二&gt;表运算符之apply

sqlserver技术内幕<二>表运算符之apply:SQL SERVER 2005新增了APPLY运算符。该运算符有些类于表连接(JOIN),但是功能却有不同。APPLY的右表表达式可以引用左输入中的列。在JOIN运算的时候,连接的2个表之间没有优先级,但是使用APPLY时,就像先计算左表输入,然后为左输入中的每一行计算一次右输
推荐度:
标签: 技术 内幕 sqlserver
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top