SQL Server中如何使用Apply关键字

89次阅读
没有评论

共计 1193 个字符,预计需要花费 3 分钟才能阅读完成。

自动写代码机器人,免费开通

SQL Server 中如何使用 Apply 关键字,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

1、概念介绍

APPLy 关键字是 SQLServer 版本中开始提供的一个系统关键字。

APPLY 的功能同联接很类似,APPLY 运算分左右两个部分,

APPLY 的右表达式:左表达式的每一行都和右表达式进行一次计算, 即右表达式需要根据左表达式提供的值进行相关计算来获取相关结果, 然后返回给客户端。

APPLY 的右表达式:是一个子查询或表值函数。

2、APPLY 运算符和联接查询区别

APPLY:先进行左表达式的数据获取,然后根据左表达式的记录依次对右表达式的值进行相关获取。

联接: 先对左右两张表进行笛卡尔乘积运算。

3、APPLY 运算符的语法格式

CROSS  APPLY: 内部联接,两张表直接连接,不需要任何的关联条件,产生的结果就是这两张表的笛卡儿集等价于 CROSS JOIN;

CROSS Apply 和 CROSS  JOIN 的区别:Cross Apply 可以在关联表子查询中用前一个关联表的字段的值,CROSS JOIN 不可以。

比如:

SELECT * FROM t1 a CROSS APPLY t2 b WHERE a.id=b.id -- 相当于  inner join SELECT * FROM t1 a CROSS JOIN t2 b WHERE a.id=b.id -- 报错 

OUTER APPLY: 左外联接,右侧的表表达式返回一个空集合,CROSS APPLY 运算符不会返回相应的左侧行,即 OUTER  APPLY 和在派生表上进行 LEFT JOIN 是等同的

SELECT * FROM t1 a OUTER APPLY (select * from t2 where id=a.id) b --  相当于  left join。

4、Cross Apply 用途 4.1 配合表值函数使用

如果查询结果集需要用到表值函数对某个字段的值进行处理的话,可以使用 CROSS APPLY。

4.2 top 子查询的用法

— 查询语文第一名,数学前两名,英语前五名的 name,学科,分数,用 cross apply 实现方法如下

SELECT b.* FROM ( select Subject= Chiness ,num=1 union all select  Math ,3 union all select  English ,5 )a cross apply (select top(a.num) * from Students where Subject=a.Subject )b

关于 SQL Server 中如何使用 Apply 关键字问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注丸趣 TV 行业资讯频道了解更多相关知识。

向 AI 问一下细节

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-04发表,共计1193字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)