前言:

在看牛腩视频的时候,发现有一个with...as语句,用于分页的使用,于是就查了一下,结果发现了这个语句非常了不起,下面就说一下这个是什么东西。

内容:

一、公用表达式概念

公用表达式 (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语句使用。

语法:

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 

输出结果:

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

请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。

With...As 用法--公用表达式相关推荐

  1. T-SQL查询——详解公用表达式(CTE)

    对于Select查询语句来说,通常情况下,为了是T-SQL代码更加简洁和刻度,在一个查询中应用另外的结果集都是通过视图而不是查询进行分解的,但是,视图作为系统对象存储在数据库中,那对于结果集仅仅需要在 ...

  2. 公用表达式 CTE with as 用法总结

    出处: http://wudataoge.blog.163.com/blog/static/80073886200961652022389/ 一.WITH AS的含义      WITH AS短语,也 ...

  3. (,)的用法逗号表达式

    C语言提供一种特殊的运算符--逗号运算符.用它将两个(或多个)表达式连接起来. 如:3+5,6+8 上式称为逗号表达式.逗号表达式的一般形式为 表达式1,表达式2 逗号表达式的求解过程是:先求解表达式 ...

  4. sql学习笔记---公用表达式(CTE)

    http://www.cnblogs.com/kissdodog/archive/2013/06/24/3153012.html 转载于:https://www.cnblogs.com/changru ...

  5. T-SQL查询进阶--详解公用表表达式(CTE)

    简介 对于SELECT查询语句来说,通常情况下,为了使T-SQL代码更加简洁和可读,在一个查询中引用另外的结果集都是通过视图而不是子查询来进行分解的.但是,视图是作为系统对象存在数据库中,那对于结果集 ...

  6. 详解公用表表达式(CTE)

    简介 对于SELECT查询语句来说,通常情况下,为了使T-SQL代码更加简洁和可读,在一个查询中引用另外的结果集都是通过视图而不是子查询来进行分解的.但是,视图是作为系统对象存在数据库中,那对于结果集 ...

  7. Python lambda表达式用法

    python lambda表达式简单用法 lambda表达式简单用法 lambda是什么? lambda表达式在sort函数中的使用 内置函数 lambda是什么? 看个例子: g = lambda ...

  8. Mysql数据库基础第八章:窗口函数和公用表表达式(CTE)

    Mysql数据库基础系列 软件下载地址 提取码:7v7u 数据下载地址 提取码:e6p9 mysql数据库基础第一章:(一)数据库基本概念 mysql数据库基础第一章:(二)mysql环境搭建 mys ...

  9. vue实现任务周期cron表达式选择组件

    vue cron表达式 Cron表达式的详细用法 vue-cron:基于vue的cron表达式组件 项目开发过程中遇到了需要在from表单输入cron表达式的情况,但对cron表达式没有深刻了解的用户 ...

最新文章

  1. mysql 拷贝数据库 表存在却打不开_mysql数据库文件复制后表打不开
  2. TCP的粘包和拆包及Netty中的解决方案
  3. Linux下用Python调用C模块
  4. 一个例子带你搞懂python作用域中的global、nonlocal和local
  5. 生成html报告并整合自动发动邮件功能
  6. java 8 lambda reduce_java8种的reduce方法和lambda表达式结合使用
  7. java的outputstream_Java OutputStream类
  8. ERP核心业务流程和Oracle-ERP业务和数据对象分析
  9. 数据结构之 栈 (Python 版)
  10. c语言万年历报告ppt,万年历设计报告
  11. win10好用的软件推荐
  12. 快40岁了,我还要不要继续写代码呢?
  13. 怎样才算是软件测试中搭建测试环境?
  14. 阿里云Aliplayer视频播放2(断点续播--根据上次播放记录实现续播功能)
  15. 字节跳动「突袭」美团,抖音竟然要做外卖
  16. linux c实现键盘模拟,C++模拟键盘按键的实例
  17. 1.基于51单片机的蓝牙手机遥控小车
  18. [028] 微信公众帐号开发教程第4篇-消息及消息处理工具的封装
  19. 前端简单入门第十八讲 使用jQuery实现表格的隔行换色
  20. 硬件篇——阻容串联电路

热门文章

  1. centos下的vim安装
  2. Pytorch实现word2vec(Skip-gram训练方式)
  3. 华硕天选2和华硕天选3哪个好 华硕天选2和华硕天选3区别
  4. C语言:ASCII字符文件与二进制字符文件的相互转换
  5. C# 程序集(Assembly)
  6. 对于K 均值聚类的尝试
  7. python爬虫怎么下载图片到手机_python爬虫获取京东手机图片的图文教程
  8. Photoshop如何使用图像调色之实例演示?
  9. Angular2+ 属性绑定
  10. 用matlab求一组数据的分布函数,求任意一组数据的概率密度函数