sql CTE简介

来源:互联网 发布:动易cms 报价 编辑:程序博客网 时间:2024/05/20 01:36

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。

请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,

每条 SELECT 语句中的列的顺序必须相同。


注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。


CTE(Common Table Expression) ,即公用表表达式,可以认为是在单个 SELECT、INSERT、

UPDATE、DELETE 或 CREATE VIEW 语句的执行范围内定义的临时结果集。CTE 与派生表类似,具体表

现在不存储为对象,并且只在查询期间有效。与派生表的不同之处在于,CTE 可自引用,还可在同一

查询中引用多次。
  CTE可用于:
  1.创建递归查询(我个人认为CTE最好用的地方)
  2.在同一语句中多次引用生成的表
  CTE优点:
  使用 CTE 可以获得提高可读性和轻松维护复杂查询的优点。
  查询可以分为单独块、简单块、逻辑生成块。之后,这些简单块可用于生成更复杂的临时 CTE,

直到生成最终结果集。

CTE的递归查询:

说明:T_Menu是一个实际存在的表

with dis
as
(
    select * from T_Menu where Id=5 union all select m.* from T_Menu m,dis t where

m.ParentID=t.Id
)
select * from dis