• SQL语句


    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的记录。

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

  • 相关阅读:
    javascript中this使用规律
    call和apply的作用和不同
    SVN的标准目录结构:trunk、branches、tags
    SVN 多人修改,如何管理 关于版本的问题
    公司考勤系统项目设计
    CDI Features
    Java Design Pattern
    公司考勤系统设计文件
    spring( history Design Philosophy )
    JSON/xml
  • 原文地址:https://www.cnblogs.com/hz-blog/p/5722887.html
Copyright © 2020-2023  润新知