• 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

  • 相关阅读:
    好多天没写了,郁闷
    昨天很受教育
    恼火的服务器
    欢迎访问我的博客网站
    体育产品论坛
    参考书目
    web2.0与数字标准
    用户产生内容与网站做内容
    Using x++ code reading data from csv file format
    Find out specified the folder for all the files
  • 原文地址:https://www.cnblogs.com/wala-wo/p/5119307.html
Copyright © 2020-2023  润新知