首页 / 知识
关于sql:如何获取递归CTE中生成的最后一条记录?
2023-04-13 16:13:00

How do you get the last record generated in a recursive CTE?在下面的代码中,我在SQL Server 2005中使用递归CTE(公用表表达式)来尝试查找基本层次结构的顶级父级。 此层次结构的规则是,每个CustID都有一个ParentID,如果CustID没有父级,则ParentID = CustID,它是最高级别。
因此,如果tblCustomer如下所示:
我从上面的代码中得到的结果是:
我想要的只是该结果的最后一行:
如何返回CTE中生成的最后一条记录(这将是最高级别的CustID)? 另请注意,此表中有多个不相关的CustID层次结构,因此我不能只执行SELECT * FROM tblCustomer WHERE ParentID = CustID。 我无法按ParentID或CustID排序,因为ID号与它在层次结构中的位置无关。 如果您只想获得最高的递归深度,就不能这样做吗?那么,当您实际查询CTE时,只需查找具有max(Depth)的行?像这样:
或者,根据trevor的建议,可以与同一CTE一起使用:
我认为,在描述的情况下,CustomerID不一定是您想要订购的东西,但是我也不十分清楚这个问题。 我不确定我是否完全理解该问题,但是可以尝试一下:
假定CustID也与示例中的顺序相同,而不是类似于GUID。 首先,如果任何父子相同,则不会完成cte。由于它是递归CTE,因此必须终止。如果Parent和cust id相同,则循环不会结束。
消息530,第16层,状态1,第15行 |
最新内容
相关内容
linux命令查找内容?
linux命令查找内容?,命令,文件,网络,名称,信息,工作,标准,系统,管理,位置,linux下按文件名和文件内容查找文件1、按名称查找文件你可以借助正linux上获取网管命令?
linux上获取网管命令?,地址,系统,网络,信息,电脑,服务,网关,状态,名字,中心,linux怎么看网关地址打开终端窗口。输入以下命令并按下回车键 roulinux命令行获取ip?
linux命令行获取ip?,地址,系统,代码,信息,电脑,服务,状态,密码,命令,网卡,【Linux】在shell脚本中获取当前主机的主机名以及IP地址1、连接上相linux查找包的命令?
linux查找包的命令?,基础,软件,项目,数据,名称,命令,环境,技术,文件,子目录,在linux下如何使用yum查看安装了哪些软件包1、通过rpm查看软件是linux命令获取主机名?
linux命令获取主机名?,工作,地址,管理,系统,信息,命令,目录,软件,代码,策略,Linux命令1、linux系统常用操作命令如下:ls:全拼list,功能是列出目录linux中递归压缩命令?
linux中递归压缩命令?,系统,工作,命令,工具,管理,信息,设备,文件,目录,常用命令,Linux第二章-Linux常用命令1、linux常用命令有pwd命令、cd命linux获取网速命令?
linux获取网速命令?,网络,工具,软件,地址,设备,5G,名称,工作,通讯,分析,linux下里面如何获取网卡的实时网速1、使用以下2个命令可以查看: 1)查看linux命令查找字符串?
linux命令查找字符串?,工具,信息,命令,字符串,系统,工作,文件,范本,样式,文本,Linux中使用grep命令,查询多个字符串Linux grep命令用于查找文linux查找权限命令?
linux查找权限命令?,系统,地址,工作,命令,文件,信息,概念,时间,标准,权限,Linux用户以及权限相关常用命令总结sudo和su类似,有一些附加的属性,管linux查找和替换命令?
linux查找和替换命令?,工作,系统,数据,字符串,文件,命令,实时,管理,首次,信息,linux下批量查询文件内容字符串并替换替换字符串:把./salt/*目前linux命令查找内存?
linux命令查找内存?,情况,系统,信息,工具,状态,分析,数字,内存,命令,适当,怎样知道linux系统内存的使用情况1、linux查看内存使用情况的方法是linux查找文件名命令?
linux查找文件名命令?,系统,信息,工具,命令,文件,字符串,样式,管道,文本,动作,linux命令grep在linux中grep命令是非常有用的,它和管道(|)配合使