赞
踩
英文(Common Table Expression) 简称:CTE,可以看做一个临时的结果集,在接下来的select ,insert,update,delete可以被多次引用。使用公用表达式CTE可以让语句更加清晰简练。临时存储结果集的方法:临时表和表变量。
视图:是一条预编译的SQL语句,并不保存实际数据。是一个快照,一个虚表,不分配物理空间。结构:快照
临时表:保存在tempdb中的实际的表,是客观存在的表类型对象。分配物理空间。 结构:表.
表变量:和普通的变量一样,在定义表变量的存储过程、批处理、动态语句、函数结束时,会自动清除。
微软对CTE描述: 可以在一个语句中多次引用公用表达式,GROUP BY语句可以直接作用于子查询所得的标量列,当不需要将结果集作为视图被多个地方引用时,CTE可以使其更加简洁,可以定义递归公用表表达式(CTE)
with...as语句,也叫作子查询部分(subquery factoring),定义一个SQL片段,该SQL片段会被整个SQL语句所用到。如果WITH AS所以定的表名被调用两次以上,则优化器会自动将WITH AS所获取的数据放入临时表里,如果只是被调用一次,则不会。可以通过materialize将WITH AS短语里的数据强制放入全局临时表里。
WITH AS可以被紧跟着的一条SQL语句所使用多次,但不能被紧跟着的多条SQL语句使用。
语法:
- with 公用表达式名字 as
-
- (select * from xxx where 条件)
-
- select * from 公用表达式名字
- --下面是一条语句引用多个cte,可以定义多个,中间用逗号分隔:
-
- with cte
- as
- (
- select * from news
- ),
- cte2
- as
- (
- select * from news
- )
-
- select * from cte c
- inner join cte2 b
- on c.caId =b.id
- --输出结果:
-
- -- case函数
- case sex
- when '1' then '男'
- when '2' then '女’
- else '其他' end
- --case搜索函数
- case when sex = '1' then '男'
- when sex = '2' then '女'
- else '其他' end
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。