【问题标题】:Using a common table expression with an OUTPUT clause使用带有 OUTPUT 子句的公用表表达式
【发布时间】:2014-01-13 06:49:13
【问题描述】:

我看到使用 CTE v/s 临时表可以获得巨大的性能提升。目前我有:

DECLARE @OutputTbl TABLE (ID INT)

INSERT INTO MyTable(Name, Address, PhoneNo)
OUTPUT INSERTED.ID INTO @OutputTbl(ID)
VALUES ('Yatrix', '1234 Address Stuff', '1112223333')

我想在这里使用 CTE。有可能吗?

【问题讨论】:

    标签: sql sql-server tsql sql-server-2012 common-table-expression


    【解决方案1】:

    不,您不能在CTE_query_definition 中使用INSERT 语句:

    指定一个 SELECT 语句,其结果集填充公共 表表达式。 CTE_query_definition 的 SELECT 语句必须 满足与创建视图相同的要求,但 CTE 不能 定义另一个 CTE。有关详细信息,请参阅备注部分和 创建视图 (Transact-SQL)。

    如果有多个 CTE_query_definition 已定义,查询定义必须由这些集合之一连接 运算符:UNION ALL、UNION、EXCEPT 或 INTERSECT。

    CTE official documentation

    CREATE VIEW official documentation

    【讨论】:

      猜你喜欢
      • 2014-02-01
      • 1970-01-01
      • 2015-03-30
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 2012-11-14
      • 1970-01-01
      相关资源
      最近更新 更多