在开发中经常会遇到无限级分类的问题,最常见的是一些无限级目录之类的,如果你对SQL Server还不是太熟悉或者还不太熟悉SQL语言的话,这将是一件很困难的事情,也许你最后能实现类似的功能,不过可能花费的时间很长,效率也不是很理想,下面的示例也许能给你一个启示。
/***创建表****/
CREATE TABLE [dbo].[Tree] (
        [ID] [int] IDENTITY (1, 1) NOT NULL ,
        [PID] [int] NULL ,
        [Name] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL    
) ON [PRIMARY]

/****创建自定义函数****/
CREATE FUNCTION dbo.fGetTreeTable
(
@ID int= null
)
RETURNS @Tab TABLE(ID int, PID int, Name varchar(10), Lev int)--返回结果的表结构
AS
BEGIN
    Declare @lev int
    Set @lev=0
    
    While @lev=0 or @@ROWCount>0
    Begin
     Set @Lev=@Lev+1
     Insert @Tab(ID, PID, Name, Lev)
     Select ID, PID, Name, @Lev From Tree Where (@Lev=1 and ((PID=@ID) or (@ID is null and PID is null))) or (PID in (Select ID From @Tab Where Lev=@Lev-1))
     order by ID
    End
    RETURN
END

直接查询Select * from dbo.fGetTreeTable(null)就可以输入所有记录。

说明:本文转载自:http://drc.cnblogs.com/articles/269062.html,如有问题可以向原作者提出。

关于SQL Server下无限多级别分类查询解决办法相关推荐

  1. Win10下安装SQL Server 2016 Management Studio报0x80070570的解决办法

    SQL Server 2016 Management Studio下载地址:https://msdn.microsoft.com/library/mt238290.aspx 然后直接用浏览器下载后,一 ...

  2. SQL Server 2014 windows身份验证登录失败解决办法

    网上大部分安装SQL Server教程里都默认选择的windows身份验证登录,没有设置sql server账号,因此初次登录时只能通过这一种方式登录,若windows身份验证也不通过,该如何解决呢. ...

  3. 试用版SQL Server 2008提示评估期已过 解决办法

    解决SQL Server 2008提示评估期已过 第一步:进入SQL2008配置工具中的安装中心 第二步:再进入维护界面,选择版本升级 第三步:进入产品密钥,输入密钥 第四步:一直点下一步,直到升级完 ...

  4. sql server远程连接时提示超时的解决办法

    查看服务器端,即所连接的sql server端的防火墙是否允许了1433端口的入站,如果没有则新建入站规则,允许1433端口入站.

  5. sql server 数据库正在使用该文件的解决办法

    今天在帮朋友还原数据库时遇到了一个问题.朋友用的是sql server 2008数据库,本身有一个数据库,他在修改程序的时候,想修改数据库的内容.但是又不想在原数据库中修改.想备份还原出一个数据库然后 ...

  6. sql server 出现数据库恢复挂起时 解决办法

    alter database sunrise4  set online

  7. SQL Server事务的隔离级别

    SQL Server事务的隔离级别 ########## 数据库中数据的一致性 ########## 针对并发事务出现的数据不一致性,提出了4个级别的解决方法:  隔离级别  第一类丢失更新  脏读 ...

  8. C# 学习笔记(19)操作SQL Server下

    C# 学习笔记(19)操作SQL Server下 ADO.net操作数据库 这应该是比较老的技术了,以后有空的话学学 Linq /// <summary> /// 数据库使用类 /// & ...

  9. SQL Server数据库的兼容级别:错误;找不到xxxx对象

    出现的错误:"找不到[openjson]对象",后来发现是由于数据库版本的兼容性造成的,该对象是sql 2016新出的 SQL Server 是Microsoft 公司推出的关系型 ...

最新文章

  1. ●洛谷P3168 [CQOI2015]任务查询系统
  2. 【OpenCV3】级联分类器目标检测——cv::CascadeClassifier简介
  3. C++以字符串形式返回第N个斐波那契的算法(附完整源码)
  4. 上海纳税百强2016,邢台2017纳税百强,深圳百强企业
  5. pythoncount函数怎么用_python中count函数简单的实例讲解
  6. 时隔两年,运维人必备的PuTTY 终于发布新版!
  7. c++时间类型详解 time_t
  8. 一元多项式的乘法与加法运算_如果加法变成【乘法】 , 那么什么能变成【加法】 ? ——记一则函数方程...
  9. 网易云音乐歌词下载 C#
  10. oracle blob 转 varchar2,oracle varchar2与clob、blob互转
  11. 推荐几个无版权图片库,可免费使用
  12. iPad/iPhone与电脑共享文件
  13. CSS常见的居中方法
  14. zzlibsvm / liblinear中的交叉训练技巧
  15. Vivado_IDE(1)熟悉环境
  16. CGO arm 树莓pi下的交叉编译
  17. ORACLE-023:令人烦恼的 ora-01722 无效数字
  18. java求30度的正弦值_获取Java中给定值的双曲正弦值
  19. jquery限制只能输入英文逗号和数字
  20. 知客CRM,管理软件优质选择

热门文章

  1. NLP经典算法复现!CRF原理及实现代码
  2. 吴恩达新书《Machine Learning Yearning》完整中文版开源!
  3. pytorch优化器与学习率设置详解
  4. GPT-3数学不及格,愁坏伯克利团队,于是他们出了12500道数学作业
  5. NLP界的「MVP」再次夺冠,刷新GLUE榜单
  6. 图文并茂!60页PPT《快速入门python数据分析路线》(附链接)
  7. 爱奇艺才被做空又爆裁员,技术研发为裁员重灾区
  8. 中文开源!它或许是最适合自学的Python教材
  9. leveldb源码分析:数据插入与删除(Put与Delete)
  10. 概要讲述SMTP, POP3和IMAP之间的区别和联系