首页 > 移动平台 > 详细

SQL语句 - MERGE INTO 、Cross/Outer Apply用法理解

时间:2016-07-31 14:23:28      阅读:370      评论:0      收藏:0      [点我收藏+]

MERGE INTO 

语法:

MERGE INTO table_name alias1
USING (table|view|sub_query) alias2
ON (join condition)
WHEN MATCHED THEN
  UPDATE table_name
   SET col1 = col_val1,
     col2 = col2_val
WHEN NOT MATCHED THEN
  INSERT (column_list) VALUES (column_values);

   

理解:

在alias2中Select出来的数据,每一条都跟alias1进行 ON (join condition)的比较,如果匹配,就进行更新的操作(Update),如果不匹配,就进行插入操作(Insert)。
因此,严格意义上讲,"在一个同时存在Insert和Update语法的Merge语句中,总共Insert/Update的记录数,就是Using语句中alias2的记录数。"

 

 

Cross/Outer Apply

语法:

<左表>  {cross|outer} apply <右表>

如:

select *
from Customers as C
 cross apply
    (select top 2 *
     from Orders as O
     where C.customerid=O.customerid
     order by orderid desc) as CA

 

理解:

  它是先得出<左表>【Customers】数据,然后将<左表>里的每一条记录,对应条件查询得到<右表>的n条记录,然后进行合并得到n行记录,最后将所有数据行返回。

     cross和outer的区别:如果对于左表的某一行记录,右表没有数据,那么cross apply结果中将没有这一行记录,而outer apply结果则会有一条右表都为null的记录。

 (实际过程数据库另有优化)

 

SQL语句 - MERGE INTO 、Cross/Outer Apply用法理解

原文:http://www.cnblogs.com/hz-blog/p/5722887.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!