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

如何使用JOIN合并两张表并去除重复数据?

解决JOIN后出现重复条目的问题

你的问题根源在于table1中同一个col_id对应多条col_name记录,直接JOIN会生成笛卡尔积,导致同一个col_id出现多条结果。DISTINCT无效是因为这些结果的col_name不同,不符合去重条件。

以下是几种可行的解决办法:

方法一:使用窗口函数筛选每组第一条记录

通过ROW_NUMBER()给每个col_id分组内的记录排序,只保留每组的第一条(可以根据需求调整排序规则):

WITH ranked_table1 AS (
    SELECT 
        col_id, 
        col_name,
        -- 按col_name升序排序取每组第一条,也可替换为其他排序字段
        ROW_NUMBER() OVER (PARTITION BY col_id ORDER BY col_name) AS rn
    FROM table1
)
SELECT 
    t2.col_id, 
    t2.col_status, 
    rt1.col_name
FROM table2 t2
JOIN ranked_table1 rt1 ON t2.col_id = rt1.col_id
WHERE rt1.rn = 1;

方法二:聚合函数取任意一个col_name

如果只需要每个col_id对应的任意一个col_name,可以用MIN()或MAX()聚合函数:

SELECT 
    t2.col_id, 
    t2.col_status, 
    MIN(t1.col_name) AS col_name -- 用MAX()也可以,按需选择
FROM table2 t2
JOIN table1 t1 ON t2.col_id = t1.col_id
GROUP BY t2.col_id, t2.col_status;

方法三:子查询匹配单条记录

用子查询直接为每个col_id返回一条col_name:

SELECT 
    t2.col_id, 
    t2.col_status, 
    (SELECT TOP 1 col_name FROM table1 t1 WHERE t1.col_id = t2.col_id ORDER BY col_name) AS col_name
FROM table2 t2;

注:TOP 1适用于SQL Server,MySQL和PostgreSQL替换为LIMIT 1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 10:55:14