sql中with as的用法练习
在工作中经常看到有人使用with as,查询很顺畅,也很快,很好奇,在网上也有不少资料,看了大神的文章,也练习一下。
首先给出两位位大神文章的链接,介绍十分详细:http://www.cnblogs.com/fygh/archive/2011/08/31/2160266.html
另一位大神的文章:http://www.cnblogs.com/CareySon/archive/2011/12/12/2284740.html
为了自己更好地理解,还是老实练习一下(概念方面的请参考上面的链接):

sql脚本,方便以后随时练习:
create table #Dept
(
ID INT,
Name nvarchar()
)
insert #Dept
select ,'上海一区'
union all
select ,'苏州一区'
union all
select ,'南京一区'
union all
select ,'上海二区'
union all
select ,'苏州二区'
union all
select ,'南京二区' create table #Proj
(
ID INT,
DeptID INT,
Name nvarchar()
) insert #Proj
select ,,'九寨沟旅游'
union all
select ,,'黄山探险'
union all
select ,,'月光码头自助'
union all
select ,,'海底捞火锅'
union all
select ,,'睡大觉'
union all
select ,,'看电影'
union all
select ,,'长白山旅游'
union all
select ,,'香港维多利亚坐船'
union all
select ,,'发奖金啦'
现在的需求是:找出要求部门包含“苏州”的项目表中的数据,一般来说,这样的需求一个简单的子查询就可以了,如下:
这只是嵌套了一层子查询,不太复杂,如果多层,可读性就很差,大神使用了这样一种方式:

这种方式虽然容易维护,但会带来性能上的损失,毕竟为了一个查询建了一张表嘛。
下面隆重祭出CTE:公用表表达式。

使用with as的注意事项,请参看链接文章。
来一段递归查询的例子:
create table #ff
(
ID int,
ParentID int,
Name nvarchar()
) insert #ff
select ,,'江苏省'
union all
select ,,'苏州市'
union all
select ,,'高新区'
union all
select ,,'东渚镇'
union all
select ,,'浙江省'
union all
select ,,'杭州市'
union all
select ,,'萧山区'
效果图:

这里要注意一下,union all 后面必须要跟bb.,否则会报错。
sql中with as的用法练习的更多相关文章
- SQL中EXISTS和IN用法
SQL中EXISTS的用法 指定一个子查询,检测行的存在. 语法:EXISTS subquery 参数:subquery 是一个受限的 SELECT 语句 (不允许有 COMPUTE 子句和 INT ...
- SQL中DATENAME函数的用法
在SQL数据库中有多种函数,下面就将为您介绍其中的DATENAME函数的用法,供您参考,希望对您学习SQL中函数的用法能有所帮助. 在SQL数据库中,DATENAME函数的作用是是从日期中提取指定部分 ...
- 【SQL】SQL中Case When的用法
Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex ' THEN '男' ' THEN '女' ELSE '其他' END --Case搜索函数 ' T ...
- SQL中SUBSTRING函数的用法
功能:返回字符.二进制.文本或图像表达式的一部分 语法:SUBSTRING ( expression, start, length ) SQL 中的 substring 函数是用来抓出一个栏位资料中的 ...
- Sql Server REPLACE函数的使用;SQL中 patindex函数的用法
Sql Server REPLACE函数的使用 REPLACE用第三个表达式替换第一个字符串表达式中出现的所有第二个给定字符串表达式. 语法REPLACE ( ''string_replace1'' ...
- SQL中的CASE的用法
CASE在SQL语句中,很有点类似java等高级编程语言中的switch这样子的多分枝语句,但是有点不同的是,case后面接的是when,另外,when的后续分枝有点类似if后面接else.这个是我的 ...
- SQL中的CASE WHEN用法
其语法如下: 1)case vlaue when [compare-value]then reslut [when[compare-value]] then result ...] [else res ...
- SQL 中With as 的用法
转自:http://www.cnblogs.com/superyinhai/archive/2010/04/09/1708643.html 一.WITH AS的含义 WITHAS短语,也叫做子查询部分 ...
- SQL中 patindex函数的用法
语法格式:PATINDEX ( '%pattern%' , expression ) 返回pattern字符串在表达式expression里第一次出现的位置,起始值从1开始算. pattern字符串在 ...
随机推荐
- ownDocument和documentElement
<!DOCTYPE html> <html> <head> <meta name="viewport" content="wid ...
- <%%>与<%#%>与<%=%>
在asp.net中经常出现包含这种形式<%%>的html代码,总的来说包含下面这样几种格式: 一. <%%> 这种格式实际上就是和asp的用法一样的,只是asp中里面是vbsc ...
- [ 兼容 ] IE和Firefox的Javascript兼容性总结
长久以来JavaScript兼容性一直是Web开发者的一个主要问题.在正式规范.事实标准以及各种实现之间的存在的差异让许多开发者日夜煎熬.为此,主要从以下几方面差异总结IE和Firefox的Javas ...
- DDDD
if (list != null && list.Count > 0) { result = ...
- 慕课网-安卓工程师初养成-4-9 Java循环语句之 for
来源:http://www.imooc.com/code/1425 Java 的循环结构中除了 while 和 do...while 外,还有 for 循环,三种循环可以相互替换. 语法: 执行过程: ...
- c# 生成json数据包
json数据类型,归根到底就是一个字符串,管他里面什么格式,它就是一个字符串来的! 看一个json数据包: { "touser":"OPENID", " ...
- php 数组转json格式
1.php若为关系数组:转化为由花括号包围的对象: 输入:$test = array("1"=>1,"2"=>2,"3"=> ...
- Android基础总结(12)——XML和JSON解析
XML和JSON解析 在网络上传输数据时最常用的格式有两种:XML和JSON.本文主要就是学习如何对这两种常用的数据格式进行解析. 1.XML和JSON的定义 XML:扩展标记语言 (Extensib ...
- Qt中QObject中的parent参数
今天写了一个小程序,验证了带参的构造函数中参数parent的作用. 在MainWindow中声明一个QDialog类型的指针,在MainWindow中对它进行初始化.我采用了两种初始化方式,一种是带参 ...
- dedecms手机站要同步pc站的图片
首先在dede目录下面找到 /include/extend.func.php 文件 //添加自定义函数 function replaceurl($newurl){ $newurl=str_repl ...