我一直在CROSS / OUTER APPLY和一位同事一起研究,我们正在努力寻找在哪里使用它们的真实示例。我已经花了很多时间研究什么时候应该在内部联接上使用交叉申请?和谷歌搜索,但主要的(唯一的)示例似乎很奇怪(使用表中的行数来确定要从另一个表中选择多少行)。我认为这种情况可能会受益于OUTER APPLY:联系人表(每个联系人包含1条记录)通信条目表(每个联系人可以包含n个电话,传真,电子邮件)但是,使用子查询,公用表表达式OUTER JOIN以及RANK()和OUTER APPLY似乎都表现相同。我猜这意味着该方案不适用于APPLY。请分享一些真实的例子,并帮助解释该功能!
3 回答
子衿沉夜
TA贡献1828条经验 获得超3个赞
一个现实的例子是,如果您有一个调度程序,并且想查看每个调度任务的最新日志条目。
select t.taskName, lg.logResult, lg.lastUpdateDate
from task t
cross apply (select top 1 taskID, logResult, lastUpdateDate
from taskLog l
where l.taskID = t.taskID
order by lastUpdateDate desc) lg
- 3 回答
- 0 关注
- 1215 浏览
添加回答
举报
0/150
提交
取消