MS Access中SQL查询仅匹配未软删除重复企业数据的问题
修改MS Access重复记录查询(排除软删除)
假设你的软删除字段是IsDeleted(0=未删除,1=已删除),直接在子查询和主查询中都添加未删除过滤条件,就能避免统计已删除记录,同时只返回未删除的重复项:
SELECT c.* FROM Customers AS c WHERE c.IsDeleted = 0 -- 主查询仅展示未删除记录 AND (c.PostCode, c.Phone) IN ( SELECT PostCode, Phone FROM Customers WHERE IsDeleted = 0 -- 子查询仅统计未删除的记录 GROUP BY PostCode, Phone HAVING COUNT(*) > 1 )
关键修改说明:
- 子查询里加
WHERE IsDeleted = 0,确保分组统计的都是未删除数据,不会把已删除记录算进来导致误判单条未删除记录为重复(比如Jacobson Group这类情况)。 - 主查询同步添加过滤条件,保证最终返回的结果全是未删除的重复记录,不会混入已删除项。
如果你的软删除字段命名不同(比如DeletedFlag、Active等),把IsDeleted = 0替换成对应的判断逻辑即可(比如Active = True)。
内容的提问来源于stack exchange,提问作者M.Taylor
相关产品推荐
相关产品推荐

