zoukankan      html  css  js  c++  java
  • 数据库递归查询(CET)

    IF OBJECT_ID('[ta]'IS NOT NULL 
        DROP TABLE [ta]
    Go
    CREATE TABLE ta([id] INT,[name] NVARCHAR(4),[parentid] NVARCHAR(2))
    Go
    INSERT INTO ta
       SELECT 1,'河北省','0' UNION ALL
       SELECT 2,'邢台市','1' UNION ALL
       SELECT 3,'石家庄市','1' UNION ALL
       SELECT 4,'张家口市','1' UNION ALL
       SELECT 5,'南宫','2' UNION ALL
       SELECT 6,'坝上','4' UNION ALL
       SELECT 7,'任县','2' UNION ALL
       SELECT 8,'清河','2' UNION ALL
       SELECT 9,'河南省','0' UNION ALL
       SELECT 10,'新乡市','9' UNION ALL
       SELECT 11,'aaa','10' UNION ALL
       SELECT 12,'bbb','10' 
    GO
    --Start
    ;with district
    as
    select from ta where [name]=N'河北省' 
     union all 
     select a.* from ta a,district b where a.parentid=b.id 
    )
    select from district
      
    --Result:
    /*
    id          name parentid
    ----------- ---- --------
    1           河北省  0
    2           邢台市  1
    3           石家庄市 1
    4           张家口市 1
    6           坝上   4
    5           南宫   2
    7           任县   2
    8           清河   2
      
    */
     
    上面代码可以还不够清晰 给多一个例子
     

    WITH district
    --查询列
    (PID, FDepartmentName,FState, FFatherName) AS

    --父表
    (SELECT  PID, FDepartmentName,FState,CONVERT(nvarchar(50), '') AS FFatherName FROM dbo.T_Department WHERE   (FParentUserID IS NULL or FParentUserID=0)
    UNION ALL
    --子表(注意是b的FDepartmentName)
    SELECT a.PID, a.FDepartmentName,a.FState,b.FDepartmentName AS FFatherName FROM dbo.T_Department AS a

    --关系
    INNER JOIN district AS b ON a.FParentUserID = b.PID)

    --查询
    SELECT   PID, FDepartmentName,FState, FFatherName
    FROM      district AS c

  • 相关阅读:
    Open live Writer
    python两则99乘法表
    更改jupyter-notebook启动时的默认目录
    在内容中插入代码,返回进行编辑时,有无法跳出代码区的情况
    关于jupyter notebook密码设置
    nginx+zuul
    spring-cloud 服务优雅下线
    java.util.ConcurrentModificationException异常排查
    使用bitset实现毫秒级查询(二)
    使用bitset实现毫秒级查询
  • 原文地址:https://www.cnblogs.com/linyijia/p/3433409.html
Copyright © 2011-2022 走看看