来自这篇文章How to use ROW_NUMBER in the following procedure?
答案有两种版本,一种使用子查询
,另一种使用CTE
来解决同一问题。
现在,使用CTE(通用表表达式)
相对于“子查询”有什么优势(因此,更具可读性强>查询实际上在做什么)
使用CTE
相对于子选择
的唯一优点是我实际上可以命名子查询
.当 CTE 用作简单(非递归)CTE 时,这两者之间是否还有其他差异?
最佳答案
在子查询与简单(非递归)CTE 版本中,它们可能非常相似。您必须使用探查器和实际执行计划来发现任何差异,这将特定于您的设置(因此我们无法告诉您完整的答案)。
一般来说; CTE 可以递归使用;子查询不能。这使得它们特别适合树结构。
关于sql - CTE 和子查询之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/706972/