【问题标题】:Update MS Access table from nested query从嵌套查询更新 MS Access 表
【发布时间】:2020-07-06 06:25:06
【问题描述】:

我的 SQL 很生锈。我正在尝试以嵌套查询的形式使用同一表中的 COUNT(*) 更新表中的一行中的计数器。 SQL如下:

UPDATE DWInvoiceHeader AS A
SET A.InvCount = (Select Count(B.HIINV) From DWInvoiceHeader AS B 
                  WHERE (B.HIVENT = '0') 
                  Group By B.HIINV 
                  Order By B.HIINV)
WHERE (A.HIVENT = '0');

行看起来像:

HIINV1.......Seq1.....InvCount   - want InvCount to be 3
HIINV1.......Seq2.....InvCount   - want InvCount to be 3
HIINV1.......Seq3.....InvCount   - want InvCount to be 3
HIINV2.......Seq1.....InvCount   - want InvCount to be 2 
HIINV2.......Seq2.....Invcount   - want InvCount to be 2
.
.
.
HIINVn.......Seq1.....InvCount   - want InvCount to be 1

上面的 SQL 给了我消息“操作必须是可更新的查询”。

有什么想法吗?

【问题讨论】:

标签: sql ms-access nested


【解决方案1】:
UPDATE DWInvoiceHeader AS A
SET A.InvCount = 
(
    Select Count(B.HIINV) 
        From DWInvoiceHeader AS B 
        WHERE (B.HIVENT = '0') AND (A.HIINV = B.HIINV)
        Group By B.HIINV 
)
WHERE (A.HIVENT = '0');

【讨论】:

  • @RawleRamkeesoon,您请求的不是嵌套查询吗?上述解决方案是否提供了所需的结果集?上面的解决方法有没有报错?
【解决方案2】:

您可以通过以下方式使用域函数 Dcount:

UPDATE test
SET InvCount = Dcount("HIVENT","test","[HIVENT]='0'")

如果您想使用通用方法,那么我建议将计数存储在工作表中,然后更新加入工作表的表。

    Select B.HIINV,Count(B.HIINV) as InvCount 
    into WorkingTbl
    From DWInvoiceHeader AS B 
    WHERE (B.HIVENT = '0') AND (A.HIINV = B.HIINV)
    Group By B.HIINV 

   Update   DWInvoiceHeader  A 
   Inner Join WorkingTbl b 
   on a.HIINV=b.HIINV 
   Set A.InvCount=b.InvCount

【讨论】:

  • 尝试了这个涉及中间表的两部分解决方案,效果很好。 DCOUNT 函数代码给出了“缺少运算符”消息。
  • Dcount 应该是这样的: Dcount("HIINV" ,"DWInvoiceHeader", "(B.HIVENT = '0') AND (A.HIINV = B.HIINV)")
  • 但总的来说:Office support on Dcount function 提示:Count 函数已经过优化,可以加快查询中记录的计数。 在查询表达式中使用 Count 函数而不是 DCount 函数,并设置可选条件以对结果实施任何限制。 当您必须从代码模块或宏或计算控件中计算域中的记录时,请使用 DCount 函数。
  • 再次尝试编辑的Dcount功能,看看是否有效
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-01
  • 2014-04-17
  • 2013-09-05
相关资源
最近更新 更多