SQL递归查询

2023-11-23

我有一个表类别,

1) Id
2) 类别名称
3) 类别大师

数据为:

1 电脑 0
2 软件1
3 多媒体 1
4 动画3
5 健康 0
6 健康子 5

我创建了递归查询:

 ;WITH CategoryTree AS
 (
  SELECT *, CAST(NULL AS VARCHAR(50)) AS ParentName, 0 AS Generation    
  FROM dbo.Category    
  WHERE CategoryName = 'Computers'

  UNION ALL        

  SELECT Cat.*,CategoryTree.CategoryName AS ParentName, Generation + 1    
  FROM dbo.Category AS Cat  INNER JOIN 
  CategoryTree ON Cat.CategoryMaster = CategoryTree.Id
 )

 SELECT * FROM CategoryTree

我将父类别的结果放在底部,就像我获得计算机的所有子类别一样

但我想要从下到上的结果,就像从动画到计算机一样,请有人建议我正确的方向。

先感谢您 :)


只需交换 join 子句中的字段即可:

WITH CategoryTree AS
        (
        SELECT  *, 0 AS Generation    
        FROM    dbo.Category
        WHERE   CategoryName = 'Animation'
        UNION ALL
        SELECT  Cat.*, Generation + 1    
        FROM    CategoryTree
        JOIN    dbo.Category AS Cat
        ON      Cat.Id = CategoryTree.CategoryMaster
        )
SELECT  *
FROM    CategoryTree
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL递归查询 的相关文章

随机推荐

  • 如何缩小TFS数据库大小

    我们有一个TFS2010环境 长期以来 其规模每周都在增长 我们删除了很多旧的分支和团队项目 我们还在几个项目中使用了测试附件清理器 就像 Brian Harry 在他的帖子中所说的那样 http blogs msdn com b bhar
  • 在 MySQL 中重置 AUTO_INCRMENT 需要很长时间

    ALTER TABLE tablename AUTO INCREMENT 10000000 此查询需要很长时间才能更新 为什么 我需要优化这个查询 ALTER TABLE 会导致整个表的重建 如果您的表包含许多行 这可能需要很长时间 如果您
  • rubyGems 环境中的“用户安装目录”是什么

    这是我的 RubyGems 环境 红宝石版本 2 5 2 Ruby 版本 2 2 2 2015 04 13 补丁级别 95 x86 64 darwin14 安装目录 Users wh026399 rvm gems ruby 2 2 2 用户
  • 表单的 InvokeRequired == false 和包含控件的 InvokeRequired == true

    这怎么可能 我有 Windows 窗体控件 派生自 System Windows Forms Form 该窗体中包含 WebBrowser 控件 Webbrowser 对象实例是在表单的构造函数中创建的 在 InitializeCompon
  • 使用 Firebase App Check 不起作用(调试)

    在实施 Firebase 的新应用程序检查功能时 我无法解决此问题 将文件上传到 Firebase 存储时失败并出现错误 引起原因 java io IOException 错误 代码 401 消息 Firebase应用程序检查令牌无效 我已
  • Laravel 查询生成器 WHERE NOT IN

    我有以下 sql 查询 SELECT FROM exams WHERE exams id NOT IN SELECT examId FROM testresults 如何将其转换为 Laravel 查询生成器格式 Thanks 您可以使用w
  • node.js require() 缓存 - 可能无效吗?

    来自node js文档 模块在第一次加载后会被缓存 这意味着 除其他外 每次调用 require foo 将得到完全相同的返回对象 如果它解析为同一个文件 有没有办法让这个缓存失效 即对于单元测试 我希望每个测试都在一个新的对象上进行 即使
  • C++ unordered_set 向量

    我可以在 C 中创建向量的 unordered set 吗 像这样的东西 std unordered set
  • 如果没有参数,则针对标准输入运行的脚本;否则输入文件=ARGV[0]

    这工作得很好 只是想知道是否有任何改进可以缩短它 if ARGV 0 nil then input lt else input File new ARGV 0 r end Do something with the input here f
  • 如何建立关系模型(类似 GitHub)权限?

    tl dr 我如何实现像 例如 github 的权限模型 更新以尝试解决 philipxy 的一些评论 我计划实现一个类似于 github 的权限模型 users 用户可以分组 用户可以在组织中 团体可以在组织中 a user will b
  • 如何在java中创建代理

    他们如何创建代理class在Java中 他们是根据需要创建代理还是创建代理并永远保留它 您可以通过两种基本方式创建代理 使用JDK机制 通过接口 看一眼java lang reflect Proxy 在具体类上使用一些字节码生成 操作库 看
  • SQL:使用 UNION、ORDER BY 和 LIMIT 进行 SELECT

    我收到的错误是 ORDER by 应该出现在 UNION 之后 但我希望这些查询在合并为 1 之前排序 然后限制为 10 SELECT FROM SELECT time x y z FROM db WHERE time gt now ORD
  • 图像处理中的标准化

    图像处理中归一化的正确含义是什么 我用谷歌搜索了它 但我有不同的定义 我将尝试详细解释每个定义 核矩阵的归一化 如果归一化是指矩阵 例如卷积滤波器的核矩阵 通常将矩阵的每个值除以矩阵的值的总和 以使矩阵的值的总和等于1 如果所有值都大于零
  • 一次性设置所有 UITextField 的样式,而不是在每个 ViewController 中设置样式?

    我正在尝试像这样设置所有文本字段的样式 CGRect frameRect2 lastname field frame frameRect2 size height 30 lastname field font UIFont fontWith
  • 使用 EL 获取列表或数组中的特定元素

    是否可以在 Java EE 页面 Facelets 或 JSP 中使用 EL 获取列表或数组中的特定元素 或者我是否必须创建自定义 EL 方法 您可以使用大括号表示法 其中您指定要检索的元素的 从零开始的 索引 p This is the
  • gradle:更改默认端口 5005

    我想调试一些同时运行的 JVM 实例 我知道我可以使用 gradle 运行 debug jvm这样 JVM 就会等待 直到我启动 IDE 调试器 以便它连接到 JVM 但默认使用端口 5005 这对于调试 JVM 的一个实例来说很好 但是如
  • python中有不小于或不大于的运算吗?

    假设我有这样的代码 a 0 if a 0 or a gt 0 print a 那就是 我想做某事的时候a不是负数 我知道我可以写if a 0 检查是否a不等于0 所以 我尝试使用if a lt 0 遵循类似的逻辑 但是 这显然不受支持 gt
  • 如何根据属性合并两个列表?

    我有两份清单 一份是假的 一份是真实的 例如 BEFORE fake list 1 ID 1 Year 2011 X ID 2 Year 2012 X ID 3 Year 2013 X real list 2 ID 35 Year 2011
  • 操作栏列表导航宽度 - 换行内容

    默认情况下 在操作栏列表中 所选项目的导航宽度与最宽项目一样宽 我想在所选项目中 wrap content 因为它在 google gmail 地图 Android 应用程序中 有人知道要做什么吗 我尝试覆盖导航适配器的 getView 但
  • SQL递归查询

    我有一个表类别 1 Id2 类别名称3 类别大师 数据为 1 电脑 02 软件13 多媒体 14 动画35 健康 06 健康子 5 我创建了递归查询 WITH CategoryTree AS SELECT CAST NULL AS VARC