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

Access数据库:获取两列无重复值的唯一组合(附示例)

在Access中获取满足双列唯一的组合

要从Access数据库表中提取两列的唯一组合,同时保证结果集中的A列、B列各自无重复值(即每个A值仅出现一次,每个B值也仅出现一次),可以通过以下两种方法实现:

方法一:使用FIRST()函数(兼容多数Access版本)

先提取所有不重复的(a,b)组合,再为每个A值选取第一个对应的B值,最后筛选出B值唯一的行,确保结果中A、B列都无重复。

假设你的表名为YourTable,替换为实际表名即可:

SELECT t.a AS A, t.b AS B
FROM (
    -- 为每个a取第一个不重复的b值
    SELECT a, FIRST(b) AS b
    FROM (
        -- 先获取所有不重复的(a,b)组合
        SELECT DISTINCT a, b FROM YourTable
        -- 可添加ORDER BY指定b的选取顺序,比如ORDER BY a, b
    ) AS DistinctPairs
    GROUP BY a
) AS FirstBPerA
-- 筛选出b值唯一的行,确保B列无重复
WHERE (
    SELECT COUNT(*)
    FROM (
        SELECT a, FIRST(b) AS b
        FROM (SELECT DISTINCT a, b FROM YourTable) AS DistinctPairs
        GROUP BY a
    ) AS Temp
    WHERE Temp.b = FirstBPerA.b
) = 1;

方法二:使用ROW_NUMBER()(适用于Access 2016及以上版本)

利用窗口函数为每个A值对应的B值排序,取第一个后再筛选B值唯一的行:

WITH UniquePairs AS (
    SELECT DISTINCT a, b FROM YourTable
),
RankedPairs AS (
    SELECT 
        a, 
        b, 
        ROW_NUMBER() OVER (PARTITION BY a ORDER BY b) AS rn
    FROM UniquePairs
),
FirstPerA AS (
    SELECT a, b FROM RankedPairs WHERE rn = 1
)
SELECT a AS A, b AS B
FROM FirstPerA
WHERE b IN (
    SELECT b FROM FirstPerA GROUP BY b HAVING COUNT(*) = 1
);

结果说明

以上两种方法都会返回你预期的结果:

A            B
-------      ---------
1            2
2            1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 17:30:37