当前位置:   article > 正文

pgsql的with 用法及case函数_pgsql with

pgsql with


一 、公用表达式 :

         英文(Common Table Expression) 简称:CTE,可以看做一个临时的结果集,在接下来的select ,insert,update,delete可以被多次引用。使用公用表达式CTE可以让语句更加清晰简练。临时存储结果集的方法:临时表和表变量。

         视图:是一条预编译的SQL语句,并不保存实际数据。是一个快照,一个虚表,不分配物理空间。结构:快照

         临时表:保存在tempdb中的实际的表,是客观存在的表类型对象。分配物理空间。               结构:表.

        表变量:和普通的变量一样,在定义表变量的存储过程、批处理、动态语句、函数结束时,会自动清除。

         微软对CTE描述: 可以在一个语句中多次引用公用表达式,GROUP BY语句可以直接作用于子查询所得的标量列,当不需要将结果集作为视图被多个地方引用时,CTE可以使其更加简洁,可以定义递归公用表表达式(CTE)

二、with...as语句


with...as语句,也叫作子查询部分(subquery factoring),定义一个SQL片段,该SQL片段会被整个SQL语句所用到。如果WITH AS所以定的表名被调用两次以上,则优化器会自动将WITH AS所获取的数据放入临时表里,如果只是被调用一次,则不会。可以通过materialize将WITH AS短语里的数据强制放入全局临时表里。

WITH AS可以被紧跟着的一条SQL语句所使用多次,但不能被紧跟着的多条SQL语句使用

语法:

  1. with  公用表达式名字  as
  2. select * from xxx  where  条件)
  3. select * from 公用表达式名字
  1. --下面是一条语句引用多个cte,可以定义多个,中间用逗号分隔:
  2. with cte 
  3. as
  4. (
  5. select * from news
  6. ),
  7. cte2 
  8. as
  9. (
  10. select * from news
  11. )
  12. select * from cte c
  13. inner join cte2 b
  14. on c.caId =b.id 
  15. --输出结果:

三 、常用case函数

  1. -- case函数
  2. case sex
  3.   when '1' then '男'
  4.   when '2' then '女’
  5.   else '其他' end
  6. --case搜索函数
  7. case when sex = '1' then ''
  8.      when sex = '2' then ''
  9.      else '其他' end

Case具有两种格式。简单Case函数和Case搜索函数。

case语句还可以用在根据不同的条件修改单列的值,如果不用此语句需要多个set语句

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/493103
推荐阅读
相关标签
  

闽ICP备14008679号