Oracle:WITH AS () Merge ?
2023-02-18 16:47:14 时间
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语句!
相关文章
- asp.net mvc 之旅—— 第二站 窥探Controller下的各种Result
- asp.net mvc 之旅—— 第一站 从简单的razor入手
- Sql Server之旅——终点站 nolock引发的三级事件的一些思考
- Sql Server之旅——第十四站 深入的探讨锁机制
- Sql Server之旅——第十三站 对锁的初步认识
- Sql Server之旅——第十二站 sqltext的参数化处理
- Sql Server之旅——第十一站 简单说说sqlserver的执行计划
- Sql Server之旅——第十站 看看DML操作对索引的影响
- Sql Server之旅——第九站 看公司这些DBA们设计的这些复合索引
- Sql Server之旅——第八站 复合索引和include索引到底有多大区别?
- Sql Server之旅——第七站 为什么都说状态少的字段不能建索引
- Sql Server之旅——第六站 使用winHex利器加深理解数据页
- Sql Server之旅——第五站 确实不得不说的DBCC命令(文后附年会福利)
- Sql Server之旅——第四站 你必须知道的非聚集索引扫描
- Sql Server之旅——第三站 解惑那些背了多年聚集索引的人
- Sql Server之旅——第二站 理解万恶的表扫描
- Sql Server之旅——第一站 那些给我们带来福利的系统视图
- 看看C# 6.0中那些语法糖都干了些什么(终结篇)
- 看看C# 6.0中那些语法糖都干了些什么(中篇)
- 看看C# 6.0中那些语法糖都干了些什么(上篇)