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

Access多值字段查询去重:不使用DISTINCT实现单条结果

解决Access多值字段导致查询重复记录的问题

问题根源

你的查询中引用了多值字段的.Value属性,这会让Access自动展开多值字段的每一个选项,生成多条对应同一id的记录;同时DISTINCT无法直接作用于多值字段,所以不能直接用它去重。

解决方案

不需要引用多值字段的.Value属性,直接针对整个多值字段判断是否为空,再通过GROUP BY分组确保每个id只返回一条记录。具体语句如下:

SELECT 
    PersonalInfo.id,
    First(PersonalInfo.[k-commission]) AS [k-commission],
    Abs(Not IsNull(PersonalInfo.[k-commission])) AS CommissionAbsent
FROM PersonalInfo
GROUP BY PersonalInfo.id;

关键说明

  • 去掉.Value引用:直接用PersonalInfo.[k-commission]判断是否为空,Access会识别整个多值字段的状态(只要有一个值就不为空)。
  • GROUP BY id:按id分组,确保每个id只生成一条记录。
  • First()聚合函数:如果需要保留多值字段的内容,用First()可以获取该字段的第一个值(你也可以根据需求换成Max()或其他聚合函数)。
  • 适配实际多字段场景:如果查询包含更多字段,把它们同时加到SELECT和GROUP BY子句中,示例如下:
    SELECT 
        PersonalInfo.id,
        PersonalInfo.name,
        PersonalInfo.age,
        First(PersonalInfo.[k-commission]) AS [k-commission],
        Abs(Not IsNull(PersonalInfo.[k-commission])) AS CommissionAbsent
    FROM PersonalInfo
    GROUP BY PersonalInfo.id, PersonalInfo.name, PersonalInfo.age;
    

如果不需要显示多值字段内容,仅保留CommissionAbsent结果,可简化为:

SELECT 
    PersonalInfo.id,
    Abs(Not IsNull(PersonalInfo.[k-commission])) AS CommissionAbsent
FROM PersonalInfo
GROUP BY PersonalInfo.id;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 03:25:36