3
WITH CTE和WITH CTE(<column_names>)有什么区别?
如在MSDN上使用通用表表达式中所示,可以将CTE定义为: WITH expression_name [ ( column_name [,...n] ) ] AS ( CTE_query_definition ) 并像这样使用它: SELECT <column_list> FROM expression_name; 假设我有2个CTE with cte1 as( select name from Table1 ) with cte2(name) as( select name from Table1 ) 由于内部查询相同,因此两个CTE的查询输出结果相同。两者之间的唯一区别是cte2(name)在其声明中定义了列name()。 当我执行两个CTE时,执行计划没有任何区别。 我只是好奇地知道: 如果我在CTE定义中未指定任何列名,会有什么区别? 为什么在创建CTE时应该/不应该指定列名? 它是否会偶然影响查询执行计划?(据我所知,这没有任何区别。)