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