• 企业400电话
  • 网络优化推广
  • AI电话机器人
  • 呼叫中心
  • 全 部 栏 目

    网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    sql server递归子节点、父节点sql查询表结构的实例
    POST TIME:2021-10-18 18:07

    一、查询当前部门下的所有子部门

    WITH  dept
        AS ( SELECT  *
            FROM   dbo.deptTab --部门表
            WHERE  pid = @id
            UNION ALL
            SELECT  d.*
            FROM   dbo.deptTab d
                INNER JOIN dept ON d.pid = dept.id
           )
      SELECT *
      FROM  dept

    二、查询当前部门所有上级部门

    WITH  tab
         AS ( SELECT  DepId ,
                ParentId ,
                DepName ,
                [Enable] ,
                0 AS [Level]
            FROM   deptTab WITH ( NOLOCK ) --表名
            WHERE  [Enable] = 1
                AND depId = @depId
            UNION ALL
            SELECT  b.DepId ,
                b.ParentId ,
                b.DepName ,
                b.[Enable] ,
                a.[Level] + 1
            FROM   tab a ,
                deptTab b WITH ( NOLOCK )
            WHERE  a.ParentId = b.depId
                AND b.[enable] = 1
           )
      SELECT *
      FROM  tab WITH ( NOLOCK )
      WHERE  [enable] = 1
      ORDER BY [level] DESC

    三、查询当前表的说明描述

    SELECT tbs.name 表名 ,
        ds.value 描述
    FROM  sys.extended_properties ds
        LEFT JOIN sysobjects tbs ON ds.major_id = tbs.id
    WHERE  ds.minor_id = 0
        AND tbs.name = 'userTab';--表名

    四、查询当前表的表结构(字段名、属性、默认值、说明等)

    SELECT CASE WHEN col.colorder = 1 THEN obj.name
           ELSE ''
        END AS 表名 ,
        col.colorder AS 序号 ,
        col.name AS 列名 ,
        ISNULL(ep.[value], '') AS 列说明 ,
        t.name AS 数据类型 ,
        col.length AS 长度 ,
        ISNULL(COLUMNPROPERTY(col.id, col.name, 'Scale'), 0) AS 小数位数 ,
        CASE WHEN COLUMNPROPERTY(col.id, col.name, 'IsIdentity') = 1 THEN '√'
           ELSE ''
        END AS 标识 ,
        CASE WHEN EXISTS ( SELECT  1
                  FROM   dbo.sysindexes si
                      INNER JOIN dbo.sysindexkeys sik ON si.id = sik.id
                                   AND si.indid = sik.indid
                      INNER JOIN dbo.syscolumns sc ON sc.id = sik.id
                                   AND sc.colid = sik.colid
                      INNER JOIN dbo.sysobjects so ON so.name = si.name
                                   AND so.xtype = 'PK'
                  WHERE  sc.id = col.id
                      AND sc.colid = col.colid ) THEN '√'
           ELSE ''
        END AS 主键 ,
        CASE WHEN col.isnullable = 1 THEN '√'
           ELSE ''
        END AS 允许空 ,
        ISNULL(comm.text, '') AS 默认值
    FROM  dbo.syscolumns col
        LEFT JOIN dbo.systypes t ON col.xtype = t.xusertype
        INNER JOIN dbo.sysobjects obj ON col.id = obj.id
                         AND obj.xtype = 'U'
                         AND obj.status >= 0
        LEFT JOIN dbo.syscomments comm ON col.cdefault = comm.id
        LEFT JOIN sys.extended_properties ep ON col.id = ep.major_id
                             AND col.colid = ep.minor_id
                             AND ep.name = 'MS_Description'
        LEFT JOIN sys.extended_properties epTwo ON obj.id = epTwo.major_id
                              AND epTwo.minor_id = 0
                              AND epTwo.name = 'MS_Description'
    WHERE  obj.name = 'userTab'--表名(点此修改) 
    ORDER BY col.colorder;

    以上所述是小编给大家介绍的sql server递归子节点、父节点sql查询表结构的实例,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

    您可能感兴趣的文章:
    • SQL Server 树形表非循环递归查询的实例详解
    • 使用SqlServer CTE递归查询处理树、图和层次结构
    • 使用SQLSERVER 2005/2008 递归CTE查询树型结构的方法
    • SQLSERVER2005 中树形数据的递归查询
    • SQLserver2008使用表达式递归查询
    • 高效的SQLSERVER分页查询(推荐)
    • SQL Server SQL高级查询语句小结
    • Sql server2005 优化查询速度50个方法小结
    • SQLserver 实现分组统计查询(按月、小时分组)
    • sqlserver 模糊查询常用方法
    • sql server实现递归查询的方法示例
    上一篇:微信小程序  滚动选择器(时间日期)详解及实例代码
    下一篇:SQL SERVER 数据库备份的三种策略及语句
  • 相关文章
  • 

    关于我们 | 付款方式 | 荣誉资质 | 业务提交 | 代理合作


    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    X

    截屏,微信识别二维码

    微信号:veteran88

    (点击微信号复制,添加好友)

     打开微信