sql - CTE 和子查询之间的区别?

标签 sql sql-server tsql subquery common-table-expression

来自这篇文章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/

相关文章:

sql - 在 SQL Server 中创建索引的最佳方法

java - 在 java 中设置参数时,Prepared Statement 查询构建不起作用

mysql - 我们应该使用读提交隔离级别吗?

c# - 如何使用 EntityFramework 核心在插入中强制使用默认值?

sql-server - Sql Server 中使用 case 和 Union 进行排序

sql - 使用 Group By Cube 保持唯一行

sql - Access 记录集产生 NAME?

sql-server - SQL Server 插入性能

sql - 如何生成序列号+在select语句中添加1

sql-server - 如何仅可视化层次结构中节点的后代、祖先和自身?