zoukankan      html  css  js  c++  java
  • CTE在Oracle和Sqlserver中使用的差异

            CTE是一个很好用的工具,他可以帮助我们清晰代码结构,减少临时表使用,同时oracle和sqlserver都提供支持。但在oracle和sqlserver中使用CTE也存在一定区别。

    • Oracle使用CTE方式

                  1、CTE查询

              with cte as(
    	     select 1 from dual 
        
                 union all
    	
                 select 2 from dual
              )
              select * from cte;

                  2、CTE插入

              insert into test
              with cte as(
    	     select 1 from dual 
        
                 union all
    	
                 select 2 from dual
              )
              select * from cte;
    

                  3、CTE更新

              UPDATE  EMP_TRACKING_LIST  L
              SET ACTIVE_FLAG = 
              (
                  WITH  sub_q  AS
                  (
                      SELECT  ...
                  )
                  SELECT  ...
                  FROM    sub_q  ...
              );

                   4、CTE删除

              delete TCH_SCHTIME_LESSON
              where a in 
              (
                  with c as (
    	          Select * 
                      from b
                  )
                  select Tchlessonkey
                  from c
                  where 1 = 2
              )
              and Tchlessonkey <> 1; 


    • sqlserver使用CTE方式

                 1、查询方式

              with cte as(
    	     select 1 a 
        
                 union all
    	
                 select 2 a
              )
              select * from cte;

                 2、插入方式

              with cte as(
    	     select 1 a
        
                 union all
    	
                 select 2 a
              )
    
              insert into test
    
              select * from cte;


                 3、更新方式

              with cte as(
    	     select 1 a
        
                 union all
    	
                 select 2 a
              )
    
              update test
              set b = a
              from cte;

                 4、删除方式

              with cte as(
    	     select 1 a
        
                 union all
    	
                 select 2 a
              )
    
              delete 
              from test,cte
              where b = a;

           总结:在sqlserver中,cte非常强大,比较好用可以广泛应用于select,insert,update,delete中。

                       在oracle中,cte仅仅用于查询操作,并不能灵活使用在insert,update,delete中,建议使用merge

  • 相关阅读:
    以太坊投票智能合约案例
    以太坊公开拍卖智能合约案例
    智能合约入门
    [elk]es增删改查最佳实战
    [elk]es增删改查最佳实战
    [elk]es增删改查最佳实战
    使nfs同步生效
    mysql建立ssl安全连接的配置
    mysql建立ssl安全连接的配置
    mysql建立ssl安全连接的配置
  • 原文地址:https://www.cnblogs.com/wala-wo/p/5119307.html
Copyright © 2011-2022 走看看