【问题标题】:"Incorrect syntax near 'WHERE'" in Delete queries删除查询中的“'WHERE' 附近的语法不正确”
【发布时间】: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


【解决方案1】:

您可以使用以下语法之一:

DELETE prc_ContractChanges 
FROM prc_ContractChanges chgs
WHERE chgs.ChangeTypeID = 1 

DELETE prc_ContractChanges 
WHERE ChangeTypeID = 1 

【讨论】:

  • 是的,也可以。我似乎对 2001 年左右有一个模糊的回忆,当我试图在 Delete 子句中显示表格时出现错误。我记得是因为我刚从 Access SQL 来,结果查询与我在 Access 中使用的查询不同。 (在那些日子里,我会在访问 GUI 中进行查询并让 Access 将其转换为 SQL。但这对删除查询从来没有用过。)
猜你喜欢
  • 1970-01-01
  • 2014-03-15
  • 1970-01-01
  • 2020-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-15
  • 1970-01-01
相关资源
最近更新 更多