【发布时间】:2019-11-04 18:32:09
【问题描述】:
在过去的一年中,我遇到了让我的删除查询识别 where 子句的问题。我不是在谈论大型主要复杂查询。甚至是一些简单的查询。
通常我很着急,所以我不尝试分析问题,而是简单地利用子查询上的连接来指定要删除的行。但现在我想知道发生了什么。我在 stackoverflow 上查看了其他地方,但这些错误始终是由于明显的原因,例如额外的逗号,或者尝试将 where 子句与 Insert values 语句一起使用。
今天的罪魁祸首如下:
DELETE FROM prc_ContractChanges chgs
WHERE chgs.ChangeTypeID = 1
在过去的 19 年中,类似的构造一直运行良好。那么为什么突然之间会抛出淫秽错误
“WHERE”附近的语法不正确。
我尝试添加评论以回应下面的评论,但每次尝试都以“添加此评论时发生错误”结束,因此 UI 正在编辑原始问题
下面的建议奏效了。所以我想到了如何通过连接识别删除中的多个表。所以我把别名放在删除子句中。那行得通。我突然想到,将别名放在带有单个表删除的删除子句中也可以。确实如此。
【问题讨论】:
-
从 WHERE 之前和之后删除别名 chgs 我还假设 prc_ContractChanges 是一个表而不是存储过程。
标签: tsql sql-server-2014