【问题标题】:Confusing Syntax Error (FROM statement) [closed]令人困惑的语法错误(FROM 语句)[关闭]
【发布时间】:2016-06-08 12:39:51
【问题描述】:

我正在尝试将表 1 的日期列更新为将来的日期,也称为退役。我在 FROM 语句下遇到语法错误。除了

,我没有得到其他信息

“FROM”附近的语法不正确。

UPDATE [database1].[dbo].[table1]
SET [database1].[dbo].[table1].[datecolumn1] = '9999-12-31 00:00:00.000'
WHERE [database1].[dbo].[table1].[END_DATE] > GETDATE() 
FROM [database1].[dbo].[table1] 
INNER JOIN [database2].[dbo].[table2] ON [database1].[dbo].[table1].[namecolumn1] = [database2].[dbo].[table2].[namecolumn2]
GO

【问题讨论】:

  • 为什么要存储'9999-12-31 00:00:00.000'?似乎是一个真正的黑客解决方案......
  • 快速浏览一下official MSDN documentation 会很容易发现你的陈述有什么问题......
  • @marc_s 我知道我空白/:

标签: sql sql-server tsql sql-update syntax-error


【解决方案1】:

你的WHERE 子句应该在FROM 之后:

UPDATE [database1].[dbo].[table1]
SET [database1].[dbo].[table1].[datecolumn1] = '9999-12-31 00:00:00.000'
FROM [database1].[dbo].[table1] 
INNER JOIN [database2].[dbo].[table2] ON [database1].[dbo].[table1].[namecolumn1]=[database2].[dbo].[table2].[namecolumn2]
WHERE [database1].[dbo].[table1].[END_DATE] > GETDATE() 
GO

【讨论】:

    【解决方案2】:

    where 子句应该放在最后。此外,您在“innner”一词中有错字(应该是“inner” - 或者更好的是,完全放弃它):

    UPDATE [database1].[dbo].[table1]
    SET    [database1].[dbo].[table1].[datecolumn1] = '9999-12-31 00:00:00.000'
    FROM   [database1].[dbo].[table1] 
    JOIN   [database2].[dbo].[table2] ON 
           [database1].[dbo].[table1].[namecolumn1] = 
           [database2].[dbo].[table2].[namecolumn2]
    WHERE  [database1].[dbo].[table1].[END_DATE] > GETDATE() 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-17
      • 2015-05-02
      • 2018-06-08
      • 2021-01-16
      • 1970-01-01
      相关资源
      最近更新 更多