SQL Server的cross apply与inner join区别是什么? -问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

SQL Server的cross apply与inner join区别是什么?

吴孟桥 2016-06-15 15:23:08 2419

cross apply ,好像也是用于内联接的啊。可是感觉没啥用。因为用join就可以直接代替了。请问大家是不是啊。如果不是,那又是为什么?

SQL
分享到
取消 提交回答
全部回答(2)
  • 风移
    2019-07-17 19:39:24

    哎呀,当然替代不了啦。据一个简单的业务场景,比如有两个数据结果集1,和2,1结果集很小,2结果集很大。如果,让1和2在连接的时候,我只需要找到2中一个满足条件的纪录,就不用接着往下找,这一次连接循环退出。这种业务场景INNER JOIN很难实现,因为INNER JOIN必须要找到所有满足条件的纪录。例子如下:

    use tempdb
    GO
    
    ;WITH dataSet1
    AS( SELECT *    FROM (VALUES(0), (1), (2), (3), (4), (5), (6), (7), (8), (9)) AS T(C)
    ), dataSet2
    as(
    SELECT a = a.C, b = b.C, c = c.C, d = d.C
     FROM dataSet1 as a, dataSet1 as b, dataSet1 as c, dataSet1 as d
     )
     SELECT A.C, B.a
     FROM dataSet1 AS A
        CROSS APPLY(
            SELECT TOP 1 *
            FROM dataSet2 AS B
            WHERE B.a = A.C
        ) AS B

    Screen_Shot_2017_01_28_at_8_59_54_PM

    0 0
  • 吴孟桥
    2019-07-17 19:39:24

    cross apply是sql server 2005新增加的,最大的用处是和分组配合使用,比如说分组后每一组数据的排序和查询。

    0 0
添加回答
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

推荐文章
相似问题