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

SQL Server:如何依据table1过滤master_table中指定account_number的数据

在SQL Server中查询重复person_number对应的主表数据

核心逻辑

先定位table1中重复出现的person_number,再关联master_table取出这些人员对应的账户记录,同时确保只保留table1中存在的账户数据。


方案一:子查询筛选重复人员后关联主表

SELECT m.account_number, m.account_balance
FROM master_table m
INNER JOIN (
    -- 先获取重复person_number对应的所有account_number
    SELECT account_number
    FROM table1
    WHERE person_number IN (
        SELECT person_number
        FROM table1
        GROUP BY person_number
        HAVING COUNT(*) > 1 -- 筛选出现次数≥2的person_number
    )
) t ON m.account_number = t.account_number;

方案二:用CTE简化逻辑

WITH DuplicatePersonList AS (
    -- 第一步:找出所有重复的person_number
    SELECT person_number
    FROM table1
    GROUP BY person_number
    HAVING COUNT(*) > 1
)
-- 第二步:关联table1和主表,筛选目标数据
SELECT m.account_number, m.account_balance
FROM master_table m
JOIN table1 t ON m.account_number = t.account_number
JOIN DuplicatePersonList dp ON t.person_number = dp.person_number;

特殊场景简化

如果你的table1本身已经是仅包含重复person_number的数据集(没有非重复人员的记录),可以直接关联两张表,加DISTINCT避免结果重复:

SELECT DISTINCT m.account_number, m.account_balance
FROM master_table m
INNER JOIN table1 t ON m.account_number = t.account_number;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 05:05:35