Sql 从嵌套查询更新MS Access表
我的SQL非常生锈。我正试图以嵌套查询的形式,从同一个表中更新具有计数(*)的表中行中的计数器。SQL语句如下所示:Sql 从嵌套查询更新MS Access表,sql,ms-access,nested,Sql,Ms Access,Nested,我的SQL非常生锈。我正试图以嵌套查询的形式,从同一个表中更新具有计数(*)的表中行中的计数器。SQL语句如下所示: UPDATE DWInvoiceHeader AS A SET A.InvCount = (Select Count(B.HIINV) From DWInvoiceHeader AS B WHERE (B.HIVENT = '0') Group By B.HIINV
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给了我消息“操作必须是可更新的查询”
有什么想法吗?您可以使用域函数Dcount,方法类似于:
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');
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的方式类似于:
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”、“dwingVoiceHeader”、“B.HIVENT='0')和(a.HIINV=B.HIINV)”),但一般来说:提示:已优化了Count函数以加快查询中记录的计数。在查询表达式中使用Count函数而不是DCount函数,并设置可选条件以对结果实施任何限制。当您必须从代码模块或宏或计算控件中对域中的记录进行计数时,请使用DCount函数。请重试编辑过的DCount函数,并查看它是否有效。请将此包含中间表的两部分解决方案量化,并且效果良好。DCOUNT函数代码给出了一条“缺少运算符”消息。DCOUNT应该是这样的:DCOUNT(“HIINV”、“dwingVoiceHeader”、“B.HIVENT='0')和(a.HIINV=B.HIINV)”),但一般来说:提示:已优化了Count函数以加快查询中记录的计数。在查询表达式中使用Count函数而不是DCount函数,并设置可选条件以对结果实施任何限制。当您必须从代码模块或宏或计算控件中对域中的记录进行计数时,请使用DCount函数。请重试编辑的DCount函数,看看它是否有效please@RawleRamkeesoon,这不是您请求的嵌套查询吗?上述解决方案是否给出了所需的结果集?上述解决方案是否导致错误?@RawleRamkeesoon,这不是您请求的嵌套查询吗?上述解决方案是否给出了所需的结果集?上述解决方案是否导致错误?