【问题标题】:Is it possible to avoid specifying a column list in a SQL Server CTE?是否可以避免在 SQL Server CTE 中指定列列表?
【发布时间】:2017-01-05 15:44:57
【问题描述】:

是否可以避免在 SQL Server CTE 中指定列列表?

我想从具有许多列的表中创建一个 CTE,以便结构相同。可能有一种方法可以在不重新列出每个列名的情况下完成此操作。

我尝试过(不成功):

with pay_cte as
(select * from payments)
select * from pay_cte

msdn 文档中的以下声明鼓舞了我的探索: 仅当查询定义中提供了所有结果列的不同名称时,列名列表才是可选的。

https://msdn.microsoft.com/en-us/library/ms175972.aspx

【问题讨论】:

  • 你尝试的时候发生了什么?
  • 你知道,用分号结束你的陈述真是个好主意;这不仅是 SQL 标准,也是微软推荐的。特别是,如果您不小心使用分号,就会在 with 语法上遇到麻烦。

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


【解决方案1】:

是的,假设您的意思是不必命名with cte(Col1, Col2) as 部分中的每一列。

您可以通过一个非常简单的测试查询自己轻松尝试:

with cte as
(
    select *
    from sys.tables
)
select *
from cte

【讨论】:

  • 嗨,戴夫 - 感谢您提供简洁、准确和有用的答案。
  • @JoelBenjamin 谢谢 :) 为了其他有相同问题的用户的利益,如果这是您要找的,请将其标记为正确答案。
  • 如果我看到任何选项,我会将其标记为正确答案。也许stackoverflow没有给像我这样的新手这样做的选择。它指出,我的赞成票在我累积 15 分之前不算数。
  • @JoelBenjamin 支持和接受答案是两件不同的事情。你应该能够接受这个作为答案。
  • @XavierDury 我不确定你为什么会期望它,因为这是一个与 SQL Server 明确相关的问答
猜你喜欢
  • 1970-01-01
  • 2012-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-06
  • 1970-01-01
  • 2021-10-31
  • 2011-01-13
相关资源
最近更新 更多