You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Access含子查询的UPDATE语句未生效问题求助

Access数据库UPDATE查询修正方案

你的原查询有几个明显问题导致更新失败:

  • WHERE子句里Val(idarr) = EXISTS(...)逻辑错误:EXISTS返回的是布尔值(True/False),不能直接和数值类型的idarr做等于比较
  • 子查询里字段拼写错误:表字段是Closed,你写成了chiuso;分组字段应该是idarr,你写成了idarrivo
  • 子查询末尾的ORDER BY是多余的,分组查询用于匹配条件时不需要排序

下面是两种修正后的可用查询:

方案一:使用IN子句匹配符合条件的IDArr

UPDATE ln
SET closed = true
WHERE idarr IN (
    SELECT idarr
    FROM ln
    WHERE Val(pv) > 0
        AND Closed = false
    GROUP BY idarr
    HAVING SUM(importo) = 0
)

方案二:使用EXISTS关联主查询记录

UPDATE ln
SET closed = true
WHERE EXISTS (
    SELECT 1
    FROM ln AS sub
    WHERE sub.idarr = ln.idarr
        AND Val(sub.pv) > 0
        AND sub.Closed = false
    GROUP BY sub.idarr
    HAVING SUM(sub.importo) = 0
)

说明

  • 两种方案都会将所有属于“Importo总和为0”分组的记录的Closed字段设为true
  • 方案二用表别名sub区分主查询和子查询的同表记录,避免Access查询引擎的歧义
  • 已经修正了所有字段拼写错误,确保和你的表结构一致

内容的提问来源于stack exchange,提问作者Jayelef

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 09:35:21