首页 > 数据库 >2023-8-7 记录一次面试题,使用Sql进行递归

2023-8-7 记录一次面试题,使用Sql进行递归

时间:2023-08-07 21:44:53浏览次数:41  
标签:面试题 递归 地区 Sql CTE 名称 2023 TEST 编号

 

题目如图所示,是数据库源,这次考官需要我用Sql,完成一次数据查询

需要根据Excel数据查询结果如上图,这时候我看到了父子关系,很容易就联想到了需要使用父子关系,既然是父子关系,一般来说应该递归跑不掉了,使用Sql进行递归代码如下:

WITH TEST_CTE 
AS
(
SELECT 地区表1.地区编号, 地区表1.地区名称, 地区表1.上级编号, Cast(地区表1.地区名称 as nvarchar(4000)) AS 详细地区名称
FROM 地区表 地区表1
WHERE 地区表1.上级编号 = 0
UNION ALL
SELECT 地区表2.地区编号, 地区表2.地区名称, 地区表2.上级编号, CTE.详细地区名称+''+   Cast(地区表2.地区名称 as nvarchar(4000)) AS 详细地区名称  
FROM 地区表 地区表2
INNER JOIN TEST_CTE CTE ON 地区表2.上级编号=CTE. 地区编号
)
SELECT TEST_CTE.地区编号, TEST_CTE.详细地区名称 AS 地区名称, TEST_CTE.上级编号 FROM TEST_CTE  ORDER BY TEST_CTE.地区编号

OPTION(MAXRECURSION 3)

这里整体上使用UNION ALL 进行全连接,UNION ALL 之上是查出父ID,是第一级,UNION ALL 之下是子ID的查询,也就是第二级、第三级,最后使用子ID等于父ID,基本上就可以了,注意Cast,需要转一下类型要不会报错,OPTION(MAXRECURSION 3)

网上所是递归次数 ,最后得出结果如下图

 

标签:面试题,递归,地区,Sql,CTE,名称,2023,TEST,编号
From: https://www.cnblogs.com/PepsiWaterGhost/p/17612800.html

相关文章

  • MySQL如何定位消耗CPU的SQL
    Mysql5.7版本以上在pfc下面的表threads表中添加了THREAD_OS_ID字段[[email protected]][test]>descperformance_schema.threads;+---------------------+------------------+------+-----+---------+-------+|Field|Type|Null|Key|Default|......
  • 2023年7月工作资料
    系统设计|如何表达技术架构?(规划篇)https://mp.weixin.qq.com/s/_o9dM8_lVyC9nwtSrM37KQB站服务稳定性建设:高可用架构与多活治理https://mp.weixin.qq.com/s/atX6YHM0Og-_rQkT_T3lpQ全面讲解智能汽车系统诊断管理模块设计https://mp.weixin.qq.com/s/MtSuuv4s_x09nAmFydzvAQ数......
  • 2023.7.3测试
    T1边的方向一个无重边、自环的无向图,现在给每条边标上方向,要求每个点有且只有一条出边,求有多少种合法的方案,答案模\(998244353\)\(1\leqn,m\leq2\times10^5\)不算很难的题若\(m<n\)或者存在度数为\(0\)的点直接输出\(0\)之后把所有度数为\(1\)的点的边全部标好方......
  • 2023.7.5测试
    T1排队打水小学级别的贪心题T2Oversleeping一道不错的扩欧题,一开始没反应过来,一直搞不等式……根据题意可以知道在\(B\)站停留的时间区间为\([k(2n+2m)+n,k(2n+2m)+n+m)\quad(k\in\mathbb{Z})\)清醒的时间区间为\([k'(p+q)+p,k'(p+q)+p+q)\quad(k'\in\mathbb{Z})\)......
  • 2023.8.3测试
    一场\(\rmNOIP\)模拟赛搬了四道Atcoder的题T1跑路一个\(n\timesm\)的\(01\)矩阵\(A\),从左上角出发,每次向下走或向右走,终点为右下角。若路径途中只经过\(0\),则称\(A\)为“好矩阵”。给定矩阵\(A\),每次可以选择它的一个子矩阵取反,求将\(A\)变成“好矩阵”的最小......
  • 2023电赛E题代码
    openmv:importsensor,image,timefrompybimportLED,UART#importlcdimportjson,ustructclassElecdesign(object):def__init__(self):sensor.reset()#图像翻转#sensor.set_vflip(True)#sensor.set_hmirror(True)......
  • 行业追踪,2023-08-07
    自动复盘2023-08-07凡所有相,皆是虚妄。若见诸相非相,即见如来。k线图是最好的老师,每天持续发布板块的rps排名,追踪板块,板块来开仓,板块去清仓,丢弃自以为是的想法,板块去留让市场来告诉你跟踪板块总结:成交额超过100亿排名靠前,macd柱由绿转红成交量要大于均线有必要给每个行......
  • Docker安装MySQL
    安装版本为MySQL8.0.131.拉取镜像#默认拉取最新镜像dockerpullmysqldockersearch<name>#https://hub.docker.com#在网站选择具体版本dockerpullmysql:8.0.132.创建挂载目录#建立宿主机数据库目录mkdir-p/home/docker/mysql/data#建立宿主机数据库配置文件......
  • “科大国创杯”2023 年安徽省青少年信息学科普日活动 简要题解
    “科大国创杯”2023年安徽省青少年信息学科普日活动简要题解小学组T1grade直接累加即可。不需要按百分比算(也就是别/100),那样可能会出现一些浮点数误差。T2order暴力枚举t就可以了T3string答案即为cnt4+cnt5-cnt20。注意到对于一个数,我们只关心其个位和十位就......
  • Sql去重查询数据,存在部分字段相同 max(id)  和 group by配合使用
    Sql去重查询数据原文链接:https://blog.51cto.com/u_15910936/5932613最近在工作过程中,面试过程中, 部分求职者或者同事,对sql怎么去重查询,不是太熟练今天下午忙里偷闲,整理了一下 其实sql基本的查询,还是蛮有意思,  下面是我大致整理的几种去重查询 1.存在2条一样的数据, 使......