zoukankan      html  css  js  c++  java
  • Oracle:WITH AS () Merge ?

    WITH AS 语法在SQL SERVER 和ORACLE数据库上均支持,主要用于子查询。语法如下:

    WITH expression_name [ ( column_name [,...n] ) ]
    AS
    ( CTE_query_definition )
    --只有在查询定义中为所有结果列都提供了不同的名称时,列名称列表才是可选的。
    --运行 CTE 的语句为:
    SELECT <column_list> FROM expression_name;
    

    但其语句在两个数据库的应用却有所不同,比如在SQL SERVER 数据库上,这种语法叫做CTE,CTE后面必须直接跟使用CTE的SQL语句(如select、insert、update、merge等),否则,CTE将失效。

    但是对于Oracle数据库而言,却有一个限制比较头疼,就是WITH AS后面需要紧跟SELECT语句。那如果需要执行MERGE该如何是好呢?
    简单,将MERGE 语句提前即可。

    举例说明:

    MERGE INTO #TEMP1 A
    USING (
    WITH SUMORDER AS 
           (SELECT PRODUCTID, SUM(AMOUNT) TOTAL 
            FROM ORDER GROUP BY PRODUCTID)
           SELECT * FROM SUMORDER
    ) B ON (A.PRODUCTID = B.PRODUCTID)
    WHEN MATCHED THEN UPDATE SET A.TOTAL = B.TOTAL;
    

    同理,适用于其他SQL语句!

  • 相关阅读:
    leetcode_Basic Calculator II
    leetcode_Basic Calculator
    LeetCode_Add Two Numbers
    LeetCode_Partition List
    LeetCode_Compare Version Numbers
    LeetCode—Longest Consecutive Sequence
    Thrift数据类型
    thrift简介
    grpc与json格式互转
    grpc测试
  • 原文地址:https://www.cnblogs.com/sheng-jie/p/8795207.html
Copyright © 2011-2022 走看看