SQLServer基础: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
IT技术分享社区
个人博客网站:https://programmerblog.xyz
文章推荐程序员效率:画流程图常用的工具程序员效率:整理常用的在线笔记软件远程办公:常用的远程协助软件,你都知道吗?51单片机程序下载、ISP及串口基础知识硬件:断路器、接触器、继电器基础知识
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2019-04-18 8 种常被忽视的 SQL 错误用法
2019-04-18 8 种常被忽视的 SQL 错误用法
2018-04-18 程序员大牛们的经典语录
2018-04-18 程序员大牛们的经典语录
2018-04-18 程序员大牛们的经典语录
2018-04-18 Win10 owerShell Get命令大全
2018-04-18 Win10 owerShell Get命令大全