更新查询的 SQL 语法

Posted

技术标签:

【中文标题】更新查询的 SQL 语法【英文标题】:SQL syntax for update query 【发布时间】:2017-10-11 06:44:40 【问题描述】:

我在 MS Access 中有一个更新查询,如下所示:

UPDATE ([tblDocument-VP] 
INNER JOIN [tbltransmittals-VP] ON [tblDocument-VP].OwnerDocumentNo = [tbltransmittals-VP].OwnerDocumentNo) 
INNER JOIN tblVendorName ON [tblDocument-VP].[Vendor Name] = tblVendorName.[VENDOR NAME] 
SET [tbltransmittals-VP].HyperDoc = [tblDocument-VP]![OwnerDocumentNo] + '-' + [tbltransmittals-VP].[REV] + '#' + [root]+[tblVendorName]![VendorDesc] + '\' + [tblDocument-VP]![Tag No] + '\' + [tblDocument-VP]![OwnerDocumentNo] + '-' + [REV] + '.pdf' + '#';

我想在 SQL Server 中创建一个视图,但是当我尝试这样做时,我得到一个错误

'('"附近的语法不正确

我不知道是什么问题,我也想知道我可以使用视图作为更新查询吗?

【问题讨论】:

你想在 sql server 中创建一个视图是什么意思?更新不能在视图中。你想在 sql server 中做同样的更新还是什么意思? 【参考方案1】:

您不能在视图中运行 UPDATE

视图只能用于读取/显示数据。 您需要的是Stored Procedure。

您的UPDATE-查询中还有多个语法错误。 Here'sINNER JOIN's 更新的一个很好的解释

【讨论】:

【参考方案2】:

延伸到 GuidoG 的评论,SP 应该是这样的

CREATE PROCEDURE uspYourProcedureName  
AS
    UPDATE t2
    SET t2.HyperDoc = 
                t1.[OwnerDocumentNo] + '-' + 
                t2.[REV] + '#' + [root]+
                t3.[VendorDesc] + '\\' + t1.[Tag No] + '\\' + t1.[OwnerDocumentNo] + '-' + [REV] + '.pdf' + '#'
    FROM [tblDocument-VP]  t1
    INNER JOIN [tbltransmittals-VP] t2
            ON t1.OwnerDocumentNo = t2.OwnerDocumentNo 
    INNER JOIN tblVendorName t3
            ON t1.[Vendor Name] = t3.[VENDOR NAME] 
GO

【讨论】:

以上是关于更新查询的 SQL 语法的主要内容,如果未能解决你的问题,请参考以下文章

SQL更新查询引发语法错误[关闭]

我的更新 sql 查询一直说语法错误,但我不知道它是啥

SQL查询语法错误,使用另一个表的数据更新表[重复]

获取转义的多语法 sql 更新字符串

MySQL基础语法学习

MySQL基础语法学习