【发布时间】:2018-10-31 15:11:10
【问题描述】:
我写了以下代码:
WITH b AS
(
SELECT *
FROM [Core].[dbo].[SalesAccount]
WHERE [SalesAccount].[RecordUpdateDate] > 2014-07-15
)
a AS
(
SELECT *
FROM [Core].[dbo].[SalesActivity]
)
SELECT *
FROM a
INNER JOIN b ON a.SalesAccountSFID = b.SalesAccountSFID
我得到这个基本上是对这里查询的修改:https://towardsdatascience.com/how-to-ace-data-science-interviews-sql-b71de212e433
对于我的生活,我无法理解为什么它会引发错误?
消息 102,第 15 级,状态 1,第 2 行
'a' 附近的语法不正确。
【问题讨论】:
-
您的链接在“The proper way to ex...”中有一点错误。
) a之间缺少逗号。但在它出现在其他代码部分之前.. -
CTE 有一个很大的优势,你可以给他们起名字。不要用
b和a之类的名称来浪费它。那么直接加入表格会更好.. -
谢谢。我在下面提供的答案中添加了评论。你们是否同意文章所说的,尽管优点是使用公用表表达式查询速度更快,因为它过滤掉了进行连接的行数
-
请阅读minimal reproducible example重新编码问题。请在新帖子中提出新问题,而不是在 cmets 中。对文本使用文本,而不是图像/链接。使帖子自成一体。 (所以这里的链接是可以的,但是对于 post re“更快”,请使用带有信用的报价。) PS“更快”取决于优化器和许多因素。研究您的 DBMS 版本。通常还有 DBMS 查询优化/实现。
-
我目前的一般评论是“更好”/“最好”等:除非你定义它,否则工程中没有“更好”/“最好”之类的东西。同样不幸的是,所有合理的实际定义都需要大量的经验,以及与对细节的混乱敏感度相互作用的大量因素。进行简单的设计。当您通过测量证明您可以想到的设计和所有替代方案都存在问题时(无论当时意味着什么),然后提出一个非常具体的问题。这也应该定义“更好”/“最好”。 meta.stackexchange.com/q/204461
标签: sql sql-server join common-table-expression