sql - 在涉及连接的更新查询中使用条件

标签 sql ms-access

我正在使用 MS Access

下面的 SQL 使用具有结束日期的 tblTorTee 记录的数量更新父 tblContact 记录中的 CurrNumTees 字段(这不是我想要的最终效果,但我提供它作为起点。

UPDATE tblContact 
  INNER JOIN tblTorTee ON tblContact.ContactId = tblTorTee.TorId 
SET tblContact!CurNumTees = DCount("[tblTorTee.EndDate]",
  "tbltortee","Torid = " & [ContactId]);

我需要用 tblTorTee 中没有 EndDate 的记录数更新 CurrNumTees 字段,换句话说,该字段为空白。我试过在各种组合和位置使用 WHERE 和 HAVING 和 IS NULL,但没有成功。你能帮我指明正确的方向吗?

最佳答案

MS Access COUNT 函数不计算空值,因此我认为您必须分两个阶段执行此操作。

首先像这样创建一个查询:

SELECT TorId, IIF(ISNULL(EndDate),1,0) AS isN
FROM tblTorTee
WHERE EndDate IS NULL;

并保存为QryEndDateNull

现在您可以像这样运行更新查询:

UPDATE tblContact
SET tblContact.CurNumTees = DSUM("IsN","QryEndDateNull","TorId = " & [ContactID]);

关于sql - 在涉及连接的更新查询中使用条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45921964/

相关文章:

sql-server - access 2007中如何使用vba刷新表列表

c# - 从数据集复制到 C# 中的 Access 表?

mysql - 逗号分隔的外键

sql - 如何在 SQL Server Express Edition 中启动并运行分析服务

php - SQL选择最近日期的多列

ms-access - “Run-time error ‘-2147023179 (800706b5)” 自动化错误 接口(interface)未知

mysql - 用于测试的临时 SQL 服务器

sql - 仅当第一部分不返回任何内容时才执行查询的第二部分

sql - 如何获得次优值

c# - 哪个数据库最适合单用户和只读模式