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語句!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM