当前位置: 首页 > 面试题库 >

t-sql递归查询

孟意致
2023-03-14
问题内容

基于现有表,我使用了CTE递归查询来得出以下数据。但是无法进一步应用它。

数据如下

id    name     parentid
--------------------------
1     project   0
2     structure 1
3     path_1    2
4     path_2    2
5     path_3    2
6     path_4    3
7     path_5    4
8     path_6    5

我想从上述数据递归形成完整路径。意味着递归将给出以下输出。

FullPaths
-------------
Project
Project\Structure
Project\Structure\Path_1
Project\Structure\Path_2
Project\Structure\Path_3
Project\Structure\Path_1\path_4
Project\Structure\Path_2\path_5
Project\Structure\Path_3\path_6

谢谢


问题答案:

以下是CTE的示例:

declare @t table (id int, name varchar(max), parentid int)

insert into @t select 1,     'project'  , 0
union all select 2,     'structure' , 1
union all select 3,     'path_1'    , 2
union all select 4,     'path_2'    , 2
union all select 5,     'path_3'    , 2
union all select 6,     'path_4'    , 3
union all select 7,     'path_5'    , 4
union all select 8,     'path_6'    , 5

; with CteAlias as (
    select id, name, parentid
    from @t t
    where t.parentid = 0
    union all
    select t.id, parent.name + '\' + t.name, t.parentid
    from @t t
    inner join CteAlias parent on t.parentid = parent.id
)
select * 
from CteAlias


 类似资料:
  • 问题内容: 我们如何在T-SQL中编写递归SQL查询?您能举一个这样的递归sql查询的简单例子吗? 问题答案:

  • 主要内容:带有 SELECT 语句的子查询,带有 INSERT 语句的子查询,带有 UPDATE 语句的子查询,带有 DELETE 语句的子查询子查询与其他 SQL Server 查询一起使用并嵌入 WHERE 子句。子查询用于返回数据,在主问题中用作限制要检索的数据的条件。 子查询与语句 SELECT、INSERT、UPDATE 和 DELETE 一起使用,并带有运算符 、、、、、 和 等。 子查询遵循的规则很少 - 子查询括在括号中。 子查询包括 FROM 子句和 SELECT 子句。 子查

  • 表T表示树。每个记录都是一个节点,每个节点只有一个父节点。 该查询计算每个节点的每个分支的SUM()。 我一直在尝试使用替代的子查询分解语法来实现这个查询的相同结果。任何帮助都将不胜感激!

  • 问题内容: 可以说我有下表 基本上,要求是将所有经理拉到您要搜索的user_id下。因此,例如,如果我发送“ Linda”,则它应该返回我: 或者,如果我发送“ Mark”,那么它应该返回我: 我听说过递归函数,但不确定如何执行。任何帮助,将不胜感激。 问题答案: 使用: 结果集: 脚本:

  • 问题内容: 我有一组按层次结构组织的数据,应该可以增长到任意大小。我需要检索整个树,但是我无法弄清楚如何仅使用SQL来完成。我当前的解决方案是创建一个临时表,并使用递归函数依次查询树的分支,然后将结果存储在临时表中,随后我再次对其进行查询以产生所需的结果。 我的问题是,从本质上讲,我正在执行的联接正确吗?构造一个中间表,然后查询结果。似乎应该有一种使用联接的方法,但是MySQL文档仅涵盖检索有限深

  • 问题内容: JPA 2是否具有运行递归查询的任何机制? 这是我的情况:我有一个实体E,其中包含一个整数字段x。它还可能具有通过@OneToMany映射的E类型的子代。我想做的是通过主键找到一个E,并获取其x的值以及所有后代的x值。有没有办法在单个查询中执行此操作? 我正在使用Hibernate 3.5.3,但我不希望在Hibernate API上没有任何明确的依赖关系。 编辑:根据这一项目,Hib