技术开发 频道

SQL Server:详解T-SQL的公用表表达式

  对于递归公用表达式来说,实现原理也是相同的,同样需要在语句中定义两部分:基本语句和递归语句

  在SQL这两部分通过UNION ALL连接结果集进行返回:

  比如:在AdventureWork中,我想知道每个员工所处的层级,0是较高级

  这么复杂的查询通过递归CTE变得如此优雅和简洁.这也是CTE最强大的地方.

  当然,越强大的力量,就需要被约束.如果使用不当的话,递归CTE可能会出现无限递归。从而大量消耗SQL Server的服务器资源.因此,SQL Server提供了OPTION选项,可以设定最大的递归次数:

  还是上面那个语句,限制了递归次数:

  所提示的消息:

  这个最大递归次数往往是根据数据所代表的具体业务相关的,比如这里,假设公司层级最多只有2层.

  总结

  CTE是一种十分优雅的存在。CTE所带来最大的好处是代码可读性的提升,这是良好代码的必须品质之一。使用递归CTE可以更加轻松愉快的用优雅简洁的方式实现复杂的查询。

0
相关文章