前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL Server中With As的介绍与应用(二)--递归的使用

SQL Server中With As的介绍与应用(二)--递归的使用

作者头像
Vaccae
发布2019-07-24 14:05:12
1.1K0
发布2019-07-24 14:05:12
举报
文章被收录于专栏:微卡智享微卡智享

前言

前一篇《SQL Server中With As的介绍与应用(一)--With As的介绍》我们介绍了一下SQL中With As,在With As中还可以进行递归的调用,这一篇我们就来讲讲递归的使用。

代码演示

一般我们使用递归的方式都是通过UNION ALL的方式,在UNION ALL 下面可以直接引用我们定义的with as的名称,如下:

上面这个图我们就是简单列出来100以内的数字排列,完整代码

代码语言:sql
复制
declare @count int
select @count=1
with tb as (
  select number= @count
  union all
  select number=tb.number+1 from tb where tb.number+1<100
  )
  select * from tb

查询出来的结果:

这就可以看出来,其实with as的递归方式还是很简单的,只要理解了UNION ALL上面的语句直接可以引用即可。


接下来我们把刚才这个取数改一下,变为我们要得到100以内的奇数。

实现思路

还是用with as进行递归取数,在UNION ALL递归的时候要判断能否被2整除,如果余数为0则加2,余数不为0则加1。

实现我们取余数并且加入判断这里我们就用到了sql中的case when XXX then XXX else YYY end

我们直接贴出来代码

代码语言:sql
复制
declare @count int
select @count=1
with tb as (
  select number= @count
  union all
  select number=(case when (tb.number+1)%2=0 then tb.number+2 
  else tb.number+1 end) 
  from tb where tb.number+1<100
  )
  select * from tb

从上面代码可以看出来我们直接在UNION ALL下面改造了一下,加入了case语句的判断,最终实现的效果如下图:

-END-

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微卡智享 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档