SQL语句 - MERGE INTO 、Cross/Outer Apply用法理解
2016-07-31 13:36
459 查看
MERGE INTO
语法:
MERGE INTO table_name alias1USING (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 server cross/outer apply 用法
- sql server cross/outer apply 用法
- Sql Server cross/outer apply 用法
- Sql语句中的inner join ,left outer join ,right outer join ,full join 的理解
- SQL Server CROSS APPLY and OUTER APPLY
- sql-(Cross||Outer)Apply
- sql语句 charindex 的用法 比较 CHARINDEX 和 PATINDEX
- SQL语句----CASE WHEN 的用法简介
- SQL语句基本的用法
- Sql语句绝妙用法
- SQL语句(inner join,left out join,right out join三者的不同用法)
- 动态执行sql语句用法
- 标准SQL的update语句三种用法
- SQL语句 (A Left Outer join B On) Where A.Fld *= B.Fld
- SQL语句中 CASE 的用法
- 无意中查sql中as的用法搜索到的一些经典的sql语句
- SQL语句中UNION的用法
- SQL语句中CASE函数的用法
- SQL语句基本的用法
- Sql语句--日期函数用法