zoukankan      html  css  js  c++  java
  • 递归查询

    (递归查询)

    步骤: 1:建一个经典的递归表结构

              2:用 with as 来对表进行递归查询

    代码
    create table Tree
    (
        NodeId 
    int ,
        ParentId 
    int,
        NodeName nvarchar(
    50)
    )  

    insert Tree(NodeId, ParentID, NodeName) values (
    0,-1,'全球')

    insert Tree(NodeId, ParentID, NodeName) values (
    1,0,'美国')
    insert Tree(NodeId, ParentID, NodeName) values (
    2,0,'中国')
    insert Tree(NodeId, ParentID, NodeName) values (
    3,0,'德国')

    insert Tree(NodeId, ParentID, NodeName) values (
    4,2,'四川省')
    insert Tree(NodeId, ParentID, NodeName) values (
    5,2,'广东省')
    insert Tree(NodeId, ParentID, NodeName) values (
    6,2,'山东省')

    insert Tree(NodeId, ParentID, NodeName) values (
    7,4,'成都市')
    insert Tree(NodeId, ParentID, NodeName) values (
    8,4,'泸州市')
    insert Tree(NodeId, ParentID, NodeName) values (
    9,4,'乐山市')

    insert Tree(NodeId, ParentID, NodeName) values (
    10,8,'纳溪区')
    insert Tree(NodeId, ParentID, NodeName) values (
    11,8,'江阳区')
    insert Tree(NodeId, ParentID, NodeName) values (
    12,8,'龙马潭')

    insert Tree(NodeId, ParentID, NodeName) values (
    13,10,'护国镇')
    insert Tree(NodeId, ParentID, NodeName) values (
    14,10,'合面镇')
    insert Tree(NodeId, ParentID, NodeName) values (
    15,10,'丰乐镇')

    insert Tree(NodeId, ParentID, NodeName) values (
    16,13,'大营村')
    insert Tree(NodeId, ParentID, NodeName) values (
    17,13,'沙田村')
    insert Tree(NodeId, ParentID, NodeName) values (
    18,13,'东巷口')

    WITH OrderList
    AS
    (
    select 
    * from Tree
    where NodeName='纳溪区'

    union all

    SELECT t.
    *
    from Tree 
    as t,OrderList as ol
    where ol.ParentID = t.NodeId  /*递归查询*/
    )
    select 
    * from OrderList
    OPTION (MAXRECURSION 
    10);



    with temptree 
    as
    (
        select 
    * from tree where NodeName = '全球'
        union all
        select t.NodeId, t.ParentId, t.NodeName 
        from tree 
    as t , temptree as tt
        
    where t.ParentID = tt.NodeId
    )
    select tt.
    * from tree as t , temptree as tt 
    where t.NodeId = tt.parentID
  • 相关阅读:
    动态规划算法1——背包问题
    图论——Dijkstra算法
    C++的输入和输出
    org.hibernate.type.SerializationException: could not deserialize 反序列化失败
    当json串传输异常(乱码破坏格式),服务器不能解析时,可以截取串达到取值的目的
    ReferenceError: ** is not defined
    jar包反复下载不成功
    include与.jspf
    url中“/”的意义
    JSP取得绝对路径
  • 原文地址:https://www.cnblogs.com/smallfa/p/1616801.html
Copyright © 2011-2022 走看看