zoukankan      html  css  js  c++  java
  • SQL Server 实现递归查询

    从SQL Server 2005开始,就可支持通用表表达式(CTE)创建递归查询。下面先创建一个测试表和一些测试数据

    1.创建一个测试表。

    USE [MASTER]
    CREATE TABLE [dbo].[TB_COLUMN_TEST](
        [F_ID] [int] NOT NULL,
        [F_NAME] [nvarchar](20) NOT NULL,
        [F_DESC] [nvarchar](100) NULL,
        [F_PARENTID] [int] NULL
    ) ON [PRIMARY]
    GO

    2.新增一些测试数据,并查看表数据。

    DELETE [TB_COLUMN_TEST]
    INSERT INTO [TB_COLUMN_TEST] VALUES (1,'测试栏目1','测试栏目描述1',NULL)
    INSERT INTO [TB_COLUMN_TEST] VALUES (2,'测试栏目2','测试栏目描述2',NULL)
    INSERT INTO [TB_COLUMN_TEST] VALUES (3,'测试栏目1-1','测试栏目描述1-1',1)
    INSERT INTO [TB_COLUMN_TEST] VALUES (4,'测试栏目1-2','测试栏目描述1-2',1)
    INSERT INTO [TB_COLUMN_TEST] VALUES (5,'测试栏目1-1-1','测试栏目描述1-1-1',3)
    INSERT INTO [TB_COLUMN_TEST] VALUES (6,'测试栏目1-1-2','测试栏目描述1-1-2',3)
    INSERT INTO [TB_COLUMN_TEST] VALUES (7,'测试栏目1-2-1','测试栏目描述1-2-1',4)
    INSERT INTO [TB_COLUMN_TEST] VALUES (8,'测试栏目1-2-2','测试栏目描述1-2-2',4)
    INSERT INTO [TB_COLUMN_TEST] VALUES (9,'测试栏目1-1-1-1','测试栏目描述1-1-1-1',5)
    INSERT INTO [TB_COLUMN_TEST] VALUES (10,'测试栏目1-1-1-2','测试栏目描述1-1-1-2',5)
    SELECT * FROM [TB_COLUMN_TEST]

    3.查询“测试栏目1”下面所有子栏目

    WITH TEMP(F_ID,F_NAME,F_DESC,F_PARENTID)
    AS
    (
        --SELECT F_ID,F_NAME,F_DESC,F_PARENTID FROM [TB_COLUMN_TEST] WHERE F_PARENTID=1  --不包括自己
        SELECT F_ID,F_NAME,F_DESC,F_PARENTID FROM [TB_COLUMN_TEST] WHERE F_ID=1 --包括自己
        UNION ALL
        SELECT A.F_ID,A.F_NAME,A.F_DESC,A.F_PARENTID FROM [TB_COLUMN_TEST] A
        INNER JOIN TEMP B 
        ON A.F_PARENTID = B.F_ID
    )
    SELECT F_ID,F_NAME,F_DESC,F_PARENTID FROM TEMP

    查询结果:

  • 相关阅读:
    作业20170928--2 单元测试
    作业20170928—1代码规范,结对要求
    第三周PSP
    20170922-3 功能测试作业
    第二周PSP
    采用c#实现功能1
    linux下搭建生成HLS所需的.ts和.m3u8文件
    android编译ffmpeg+x264
    ubuntu.sh: 113: ubuntu.sh: Syntax error: "(" unexpected
    解决:[WARNING] fpm_children_bury(), line 215: child 2736 (pool default) exited on signal 15 SIGTERM after 59.588363 seconds from start
  • 原文地址:https://www.cnblogs.com/tracine0513/p/8547957.html
Copyright © 2011-2022 走看看