zoukankan      html  css  js  c++  java
  • SQL轮询,查询支持无限极分类数据表中的某一分类所有数据的SQL语句

    如题要查询出支持无限极分类的数据表中的某一分类所有数据

    如一个数据中有一个支持无限极分类的产品表

    我想查出如下数据,只查出"分类A"及其下面的所有子分类的数据

    那么SQL语句该如何写呢?

    如下是我的解决方案

    SQL代码

    --建立一个数据表 这可以是你的一个物理表
    declare @temp table(
        ID 
    varchar(20),
        ParentID 
    varchar(20),
        Name 
    nvarchar(100))

    insert into @temp values('A','','分类A')
    insert into @temp values('B','','分类B')
    insert into @temp values('C','','分类C')
    insert into @temp values('D','','分类D')
    insert into @temp values('A1','A','分类A1')
    insert into @temp values('A2','A','分类A2')
    insert into @temp values('A11','A1','分类A11')
    insert into @temp values('A12','A1','分类A12')

    select * from @temp

    --查询"分类A"下面的所有数据
    declare @$result table(
        ID  
    varchar(20), 
        ParentID  
    varchar(20), 
        Name 
    nvarchar(100),
        myLevel  
    int)
    declare @Level int
    set @Level = 0
    insert into @$result select *,@Level from @temp where ID='A'

    while(@@rowcount>0)
    begin
        
    set @Level = @Level + 1
        
    insert into @$result 
        
    select a.*,@Level 
        
    from @temp a,@$result b
        
    where a.ParentID = b.ID and myLevel = @Level-1
    end
    select * from @$result

    查询结果如下

    关键就是设一个标志Level进行轮询查找出想要的数据。

    用心写好每一篇文章
  • 相关阅读:
    两个路由器配置静态路由只能单边 ping 通
    CVE202125646:Apache Druid远程命令执行漏洞复现
    批量修改图片的格式
    十大远程控制软件排名
    Splashtop 免费60天 大赠送
    单例设计模式
    蓄水池抽样算法/水塘采样算法
    kafka安装(单机版)
    LeetCode382链表随机节点
    LeetCode398随机数索引
  • 原文地址:https://www.cnblogs.com/whlalhj/p/1719463.html
Copyright © 2011-2022 走看看