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

如何对表中两列执行去重并返回对应行所有列的SQL实现方法

基于SOURCE、TARGET两列去重的SQL查询方案

核心需求:对数据表中SOURCE、TARGET两列的组合值进行去重,重复组合仅保留一条数据,返回所有列的完整内容。

通用实现方案(支持MySQL 8.0+、PostgreSQL、Oracle、SQL Server)

使用窗口函数实现,灵活性更高,可自定义重复数据的保留规则:

SELECT ID, TITLE, SOURCE, TARGET
FROM (
    SELECT 
        *,
        -- 按SOURCE、TARGET组合分组,同组内按ID升序排序
        ROW_NUMBER() OVER (PARTITION BY SOURCE, TARGET ORDER BY ID) AS rn
    FROM 替换为你的实际表名
) temp_table
WHERE rn = 1;

说明:如果需要保留重复数据中ID最大的条目,只需将ORDER BY ID修改为ORDER BY ID DESC即可。

MySQL 5.x 低版本兼容方案

低版本MySQL不支持窗口函数,可通过分组+关联查询实现:

SELECT t1.*
FROM 替换为你的实际表名 t1
INNER JOIN (
    -- 先查询每个SOURCE、TARGET组合下最小的ID
    SELECT MIN(ID) AS min_id
    FROM 替换为你的实际表名
    GROUP BY SOURCE, TARGET
) t2 ON t1.ID = t2.min_id;

执行效果

以上两种方案执行后,均可得到预期的去重结果:

ID TITLE SOURCE TARGET
1  asd   12      2
2  asd1  123     125
3  asd1  123     56  
5  asd3  164     146

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 20:24:03