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

如何在MS Access中筛选ID与DATE对应的重复行记录?

在MS Access中筛选同一ID同一日期的重复记录

核心单条查询方案

根据需求,这里提供两种兼容MS Access的单条SQL查询方案,可直接使用:

方案1:多字段IN子查询(简洁高效)

如果你的Access版本支持多字段IN语法,优先用这个:

SELECT a.*, m.*
FROM Absen a
INNER JOIN MASTERID m ON a.ID = m.ID
WHERE (a.ID, a.DATE) IN (
    -- 先找出所有出现2次及以上的ID+日期组合
    SELECT ID, DATE
    FROM Absen
    GROUP BY ID, DATE
    HAVING COUNT(*) >= 2
)
ORDER BY a.ID, a.DATE;

方案2:EXISTS子查询(兼容所有Access版本)

如果Access不支持多字段IN,改用EXISTS判断重复:

SELECT a.*, m.*
FROM Absen a
INNER JOIN MASTERID m ON a.ID = m.ID
WHERE EXISTS (
    SELECT 1
    FROM Absen a2
    WHERE a2.ID = a.ID 
      AND a2.DATE = a.DATE
      -- 替换成Absen表的主键字段(比如ID_Absen),确保是同组但不同的记录
      AND a2.ID_Absen <> a.ID_Absen
)
ORDER BY a.ID, a.DATE;

处理DateTime类型的DATE字段

如果你的DATE字段是DateTime类型(包含时间部分),会导致同一天但不同时间的记录被当成不同组,需要提取纯日期部分:

SELECT a.*, m.*
FROM Absen a
INNER JOIN MASTERID m ON a.ID = m.ID
WHERE (a.ID, DATEVALUE(a.DATE)) IN (
    SELECT ID, DATEVALUE(DATE)
    FROM Absen
    GROUP BY ID, DATEVALUE(DATE)
    HAVING COUNT(*) >= 2
)
ORDER BY a.ID, DATEVALUE(a.DATE);

原查询无结果的常见原因排查

  1. 分组字段错误:原查询可能只按ID或DATE单一字段分组,没有同时按两个字段分组
  2. HAVING条件错误:比如写成COUNT(*) = 1而不是>=2
  3. 表关联错误:Absen和MASTERID的关联字段不匹配(比如用了错误的ID字段)
  4. 日期格式问题:DateTime字段包含时间,导致分组时无法识别为同一天(用DATEVALUE()处理即可)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 11:37:16