适合场景:

一对多时取多个的其中几个(最大/最小的数)
前言
常开发中遇到多表查询时,首先会想到 INNER JOIN 或 LEFT OUTER JOIN 等等,但是这两种查询有时候不能满足需求。比如,左表一条关联右表多条记录时,我需要控制右表的某一条或多条记录跟左表匹配。貌似,INNER JOIN 或 LEFT OUTER JOIN 不能很好完成。但是 CROSS APPLY 与 OUTER APPLY 可以;
有两张表:供应商表和商品表,数据如下:


**CROSS APPLY:**不取为null的值

1.查询每个供应商产品价格最高的两件产品

select s.id,s.name, t.ProductName,t.price  from supplier s
cross apply
(select top 2   * from products p where s.id = p.supplierid order by cast(p.price as int) desc  ) as t

结果:

OUTER APPLY :可以取为null的值

总结:

  1. CROSS APPLY 的意思是“交叉应用”,在查询时首先查询左表,然后右表的每一条记录跟左表的当前记录进行匹配。匹配成功则将左表与右表的记录合并为一条记录输出;匹配失败则抛弃左表与右表的记录。(与 INNER JOIN 类似)

  2. OUTER APPLY 的意思是“外部应用”,与 CROSS APPLY 的原理一致,只是在匹配失败时,左表与右表也将合并为一条记录输出,不过右表的输出字段为 null。(与 LEFT OUTER JOIN 类似)

CROSS APPLY 和 OUTER APPLY 函数相关推荐

  1. SQL 关于apply的两种形式cross apply 和 outer apply

    SQL 关于apply的两种形式cross apply 和 outer apply 阅读目录 SQL 关于apply的两种形式cross apply 和 outer apply Sql学习第四天--S ...

  2. SQL Server 2008的cross apply 和 outer apply

    我们知道有个 SQL Server 2000 中有个 cross join 是用于交叉联接的.实际上增加 cross apply 和 outer apply 是用于交叉联接表值函数(返回表结果集的函数 ...

  3. mysql cross apply_SQL Server CROSS APPLY和OUTER APPLY的应用详解

    SQL Server数据库操作中,在2005以上的版本新增加了一个APPLY表运算符的功能 SQL Server数据库操作中,在2005以上的版本新增加了一个APPLY表运算符的功能.新增的APPLY ...

  4. sql out apply_在SQL Server中CROSS APPLY和OUTER APPLY之间的区别

    sql out apply SQL Server supports table valued functions, what are functions that return data in the ...

  5. 浅析 SQL Server 的 CROSS APPLY 和 OUTER APPLY 查询 - 第一部分

    第一部分:APPLY 与 JOIN 你可能知道,SQL Server 中的 JOIN 操作用于联接两个或多个表.但是,在 SQL Server 中,JOIN 操作不能用于将表与表值函数的输出联接起来. ...

  6. sqlserver中cross apply与outer apply用法

    apply有两种形式: cross apply 和 outer apply 先看看语法: <left_table_expression>  {cross|outer} apply < ...

  7. SQL 关于apply的两种形式cross apply 和 outer apply(转)

    转载链接:http://www.cnblogs.com/shuangnet/archive/2013/04/02/2995798.html apply有两种形式: cross apply 和 oute ...

  8. 【转载】SQL 关于apply的两种形式cross apply 和 outer apply

    apply有两种形式: cross apply 和 outer apply 先看看语法: <left_table_expression>  {cross|outer} apply < ...

  9. SQL Server中CROSS APPLY和OUTER APPLY的应用详解

    SQL Server数据库操作中,在2005以上的版本新增加了一个APPLY表运算符的功能.新增的APPLY表运算符把右表表达式应用到左表表达式中的每一行.它不像JOIN那样先计算那个表表达式都可以, ...

  10. CROSS APPLY 和outer apply

      /*  CREATE TABLE A(id INT, NAME VARCHAR(30))  CREATE TABLE B(id INT, marks VARCHAR(30))    INSERT  ...

最新文章

  1. 小目标 | DAX高级实践-Power BI与Excel联合应用
  2. CISCO 路由器(2)
  3. Google是否会成为下一个微软?
  4. 联想 重装系统后F5 F6键无法使用
  5. k8s pod资源限制策略:requests、limits配置示例
  6. C++卷积神经网络实例:tiny_cnn代码具体解释(7)——fully_connected_layer层结构类分析...
  7. 每日一题(9)—— 写一个标准宏MIN,这个宏输入两个参数并返回较小的一个
  8. 字符串的最长不重复字串
  9. Leetcode 254.因子的组合
  10. Centos7下ping通ip但是ping不通域名+firefox无法打开网页
  11. 新基建浪潮下服务机器人进入快车道 思岚科技推动产业“加速起跑”
  12. 【IDEA】解决: alt+/快捷键 冲突的问题
  13. 【独家折扣】淘客小程序源码
  14. c语言代码混淆器,工具:c 混淆器——AvIator
  15. 淘宝客微信发单机器人_返利机器人快速开发SDK
  16. 【源码】结构支持向量机的块坐标Frank-Wolfe优化
  17. LM2596/LM2596S多路降压稳压DC-DC开关电源芯片详解(第二部分:电路设计)(12V转5V、12V转3.3V、任意电压转任意电压)
  18. [转]周易入门三十五问答
  19. 日本公平贸易委员会结束对App Store的调查,苹果再次宣布整改
  20. 开心一笑,,,哈哈哈

热门文章

  1. bzoj5064 B-number 数位dp
  2. SBC在企业IP通信系统中的应用
  3. bartlett方差齐性检验_仅有两独立样本的样本量、均值和标准差,在SPSS进行T检验...
  4. 解决Ubuntu20.04插入英伟达计算卡后无法开机问题-Ubuntu双显卡切换
  5. 安装oracle提示你对制定的路径没有足够写入的权限,【网络安全知识竞赛】模拟题5...
  6. Typora怎么将文本居中
  7. C#UDP广域网,局域网通信-原理分析
  8. Verilog(2):与或非运算
  9. 最全最新cpu显卡天梯图_2019桌面级显卡排行_2019年2月最新CPU天梯图 桌面级处理器天梯图...
  10. 操作系统之调度 (十) --- 处理机调度、高级调度、中级调度、低级调度...