网络编程
位置:首页>> 网络编程>> 数据库>> sql server递归子节点、父节点sql查询表结构的实例

sql server递归子节点、父节点sql查询表结构的实例

作者:WhyShang  发布时间:2024-01-24 07:39:55 

标签:sql,递归查询,节点

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


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查询表结构的实例网站的支持!

来源:http://www.cnblogs.com/WhyShang/archive/2017/02/23/6435080.html

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com