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进行轮询查找出想要的数据。

    用心写好每一篇文章
  • 相关阅读:
    SHELL脚本扩展
    Linux服务器核心参数配置
    JavaIO系统
    SHELL脚本进阶
    计算机是怎么跑起来的?
    3年,从双非到百度的学习经验总结
    桥接模式:探索JDBC底层实现
    并发编程(三):从AQS到CountDownLatch与ReentrantLock
    并发编程(四):ThreadLocal从源码分析总结到内存泄漏
    Zookeeper:分布式程序的基石
  • 原文地址:https://www.cnblogs.com/whlalhj/p/1719463.html
Copyright © 2011-2022 走看看