【问题标题】:UPDATE Query Multiple fields, multiple conditionsUPDATE查询多字段,多条件
【发布时间】:2015-01-29 18:04:39
【问题描述】:

这是一篇与 MS Access 相关的帖子。

如何将 INSERT INTO 语句更改为 UPDATE 语句?

            DoCmd.RunSQL "INSERT INTO A_tblStagingTablesChecksHEADERS (Header, Header2) " _
                & "SELECT DISTINCT(SELECT F1 FROM tblStagingIssuerNames_ReverseRepos " _
                & "WHERE F1 = 'ISSUER CODE') as F1data, " _
                & "(SELECT F51 FROM tblStagingIssuerNames_ReverseRepos " _
                & "WHERE F51 = 'INSTRUMENT REFERENCE (BOE)') as F2data " _
                & "FROM tblStagingIssuerNames_ReverseRepos;"

我已经尝试了以下(不成功):

    DoCmd.RunSQL "UPDATE A_tblStagingTablesChecksHEADERS, tblStagingIssuerNames_ReverseRepos " _
                & "SELECT DISTINCT(SELECT F1 FROM tblStagingIssuerNames_ReverseRepos " _
                & "WHERE F1 = 'ISSUER CODE') as F1data, " _
                & "SELECT DISTINCT(SELECT F51 FROM tblStagingIssuerNames_ReverseRepos " _
                & "WHERE F51 = 'INSTRUMENT REFERENCE (BOE)') as F2data " _
                & "FROM tblStagingIssuerNames_ReverseRepos," _
                & "SET A_tblStagingTablesChecksHEADERS.Header = F1data, " _
                & "SET A_tblStagingTablesChecksHEADERS.Header2 = F2data;"

对于这两个语句(有和没有别名),我得到运行时错误'3075':

查询表达式 '(SELECT DISTINCT(SELECT F1 FROM tblStagingIssuerNames_ReverseRepos WHERE F1 = 'ISSUER CODE'))' 中的语法错误。

【问题讨论】:

    标签: select sql-update ms-access-2010 sql-insert


    【解决方案1】:

    您正在使用无效的更新语句语法。试试这个:

    DoCmd.RunSQL "UPDATE A_tblStagingTablesChecksHEADERS " _
                & "SET Header = (SELECT DISTINCT F1 FROM tblStagingIssuerNames_ReverseRepos " _
                & "WHERE F1 = 'ISSUER CODE'), " _
                & "Header2 = (SELECT DISTINCT F51 FROM tblStagingIssuerNames_ReverseRepos " _
                & "WHERE F51 = 'INSTRUMENT REFERENCE (BOE)')";
    

    【讨论】:

    • @Rono 感谢您的回复。我相信别名是强制性的。我已经尝试将它们添加到脚本的括号中和之外,但仍然收到语法错误消息。
    • UPDATE 语句中不需要别名。如果任何一个内部选择语句返回多条记录,我可以看到您如何收到错误消息,但我需要知道您收到的错误消息。
    • @Rono,用于此部分的初始 SELECT 语句确实检索了多条记录(实际上是基础表保存的记录数),这就是我添加 DISTINCT 的原因。使用 DISTINCT 我得到一条记录。我将在我的帖子中添加对错误的描述。
    • @ProtoVB,我应该更仔细地研究一下。我更新了我的答案,所以语法应该是正确的。
    • 该语句现在运行...但检索到 0 个数据!我不明白这个。如果我只运行 SELECT 语句,那么我会得到每个字段的值!!怎么了?
    猜你喜欢
    • 1970-01-01
    • 2012-04-05
    • 2021-09-23
    • 2023-03-12
    • 2018-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多