【问题标题】:Access Update Query w/ Subquery使用子查询访问更新查询
【发布时间】:2016-08-01 03:55:24
【问题描述】:

我的尝试:

UPDATE [DATA OUTPUT TABLE]
(
SELECT [DATA OUTPUT TABLE].[Journal Voucher ID], [DATA OUTPUT TABLE].[dBranch] AS Branch, [DATA OUTPUT TABLE].[dBranch] & " Shared Appropriation" AS [Shared Appropriation]

FROM [DATA OUTPUT TABLE]

WHERE [DATA OUTPUT TABLE].[Journal Voucher ID] In

  (
    SELECT [DATA OUTPUT TABLE].[Journal Voucher ID]
    FROM [DATA OUTPUT TABLE]
    GROUP BY [DATA OUTPUT TABLE].[Journal Voucher ID]
    HAVING
      (((First([DATA OUTPUT TABLE].dBranch)="Navy")
        AND
      (Last([DATA OUTPUT TABLE].dBranch)="USMC"))
      OR
      ((First([DATA OUTPUT TABLE].dBranch)="USMC")
        AND 
      (Last([DATA OUTPUT TABLE].dBranch)="Navy")))
  )
;) AS SATable
SET [DATA OUTPUT TABLE].[Shared Appropriation] = SATable.[Shared Appropriation]
Where [DATA OUTPUT TABLE].[Journal Voucher ID] = SATable.[Journal Voucher ID], [DATA OUTPUT TABLE].[dBranch] = SATable.[Branch];

我的目标是使用我的查询中的 [dBranch] 字段和“共享拨款”的串联来更新 [数据输出表] 中的 [共享拨款] 列(有效):

SELECT [DATA OUTPUT TABLE].*
FROM [DATA OUTPUT TABLE]

WHERE ((([DATA OUTPUT TABLE].[Journal Voucher ID]) In (SELECT [DATA OUTPUT TABLE].[Journal Voucher ID]
FROM [DATA OUTPUT TABLE]
GROUP BY [DATA OUTPUT TABLE].[Journal Voucher ID]
HAVING (((First([DATA OUTPUT TABLE].dBranch))="Navy") AND ((Last([DATA OUTPUT TABLE].dBranch))="USMC")) OR (((First([DATA OUTPUT TABLE].dBranch))="USMC") AND ((Last([DATA OUTPUT TABLE].dBranch))="Navy"));)));

我的想法是为工作查询创建一个别名 SATable,并将其放入更新查询中。

【问题讨论】:

  • 当您在UPDATE [DATA OUTPUT TABLE] 之后添加逗号时会发生什么情况,即UPDATE [DATA OUTPUT TABLE], (SELECT [DATA .....
  • 您的尝试有什么问题 - 是语法错误 - 还是没有正确更新?
  • @cha 之后我得到“From Clause 中的语法错误”
  • @dbmitch(没有逗号/如已发布)我收到“更新语句中的语法错误”
  • 第二个查询的目的是什么?与您的更新有何关联?

标签: sql ms-access sql-update subquery


【解决方案1】:

您的查询可以重写为:

UPDATE [DATA OUTPUT TABLE]
SET [DATA OUTPUT TABLE].[Shared Appropriation] = [dBranch] & " Shared Appropriation"
Where [DATA OUTPUT TABLE].[Journal Voucher ID] IN
  (
    SELECT [DATA OUTPUT TABLE].[Journal Voucher ID]
    FROM [DATA OUTPUT TABLE]
    GROUP BY [DATA OUTPUT TABLE].[Journal Voucher ID]
    HAVING
      (((First([DATA OUTPUT TABLE].dBranch)="Navy")
        AND
      (Last([DATA OUTPUT TABLE].dBranch)="USMC"))
      OR
      ((First([DATA OUTPUT TABLE].dBranch)="USMC")
        AND 
      (Last([DATA OUTPUT TABLE].dBranch)="Navy")))
  )

【讨论】:

    猜你喜欢
    • 2022-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-30
    • 2011-05-04
    • 2013-05-11
    相关资源
    最近更新 更多