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

    用心写好每一篇文章
  • 相关阅读:
    Java反射机制之初见端倪
    DB2日常维护之优化 【优化】
    db2pd 分析锁等待 步骤 【监控】
    DB2 UDF
    db2中会导致表处于reorg pending状态的alter语句
    利用Explain分析SQL【监控】
    Hibernate之Hello World篇
    规划下时间 13.0413.08
    神经网络
    ML EX3
  • 原文地址:https://www.cnblogs.com/whlalhj/p/1719463.html
Copyright © 2011-2022 走看看