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

如何查找删除重复记录,获取两列distinct值?求正确实现方法

解决数据集去重:分别提取两列唯一值

你的需求核心是分别保留col1的所有非空唯一值、col2的所有非空唯一值,而非整行去重或关联两列数据。用自连接不符合预期的原因很明确:自连接会让两列的唯一值产生笛卡尔积(比如col1的3个唯一值和col2的3个唯一值两两配对,得到9条冗余记录),完全偏离了你的需求。

下面是两种可行的解决方法:

方法1:用DISTINCT + UNION ALL拆分查询

拆分两部分分别提取唯一值,再合并结果:

-- 提取col1的非空唯一值,col2补null
SELECT DISTINCT col1, NULL AS col2
FROM your_table
WHERE col1 IS NOT NULL

UNION ALL

-- 提取col2的非空唯一值,col1补null
SELECT DISTINCT NULL AS col1, col2
FROM your_table
WHERE col2 IS NOT NULL;

方法2:用GROUP BY聚合唯一值

通过GROUP BY直接聚合出每列的唯一值:

-- 聚合col1的非空唯一值
SELECT col1, NULL AS col2
FROM your_table
WHERE col1 IS NOT NULL
GROUP BY col1

UNION ALL

-- 聚合col2的非空唯一值
SELECT NULL AS col1, col2
FROM your_table
WHERE col2 IS NOT NULL
GROUP BY col2;

两种方法最终都会得到你需要的结果:3条col1唯一值记录 + 3条col2唯一值记录,共6条目标唯一记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 16:29:56