我们如何在sql server中的子查询中使用CTE?

Par*_*esh 34 sql t-sql sql-server sql-server-2005 common-table-expression

我们如何在sql server中的子查询中使用CTE?

喜欢 ..

选择id(我想在这里使用CTE),来自table_name的名称

Max*_*erl 41

只需在顶部定义您的CTE并在子查询中访问它?

WITH YourCTE(blubb) AS
(
    SELECT 'Blubb'
)
SELECT id,
       (SELECT blubb FROM YourCTE),
       name
FROM   table_name
Run Code Online (Sandbox Code Playgroud)

  • 这不能减轻相关子查询. (8认同)

小智 13

它不起作用:

select id (I want to use CTE here), name from table_name
Run Code Online (Sandbox Code Playgroud)

在子查询中不可能使用CTE.

您可以将其视为一种解决方法:

CREATE VIEW MyCTEView AS ..here comes your CTE-Statement.
Run Code Online (Sandbox Code Playgroud)

然后你就可以这样做:

select id (select id from MyCTEView), name from table_name
Run Code Online (Sandbox Code Playgroud)

  • 我多次希望能够将 CTE 用作派生表。如果有一种不涉及创建数据库对象(即席)的方法,我会喜欢它。 (3认同)