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

如何筛选数据库列中的唯一记录?SELECT语句去重相关疑问

获取Column2值仅出现一次的SQL查询方案

你说得完全对,DISTINCT确实解决不了这个问题——它只是去除完全重复的行,没法筛选出column2值仅出现一次的记录。要实现你要的效果,有两种常用的SQL方案,适配不同的数据库场景:

方案1:使用GROUP BY + HAVING子查询(兼容绝大多数数据库)

这种方法先通过子查询找出所有仅出现一次的column2值,再关联原表取出对应的完整行:

SELECT t.*
FROM your_table t
JOIN (
    SELECT column2
    FROM your_table
    GROUP BY column2
    HAVING COUNT(*) = 1
) sub_query ON t.column2 = sub_query.column2;

逻辑说明:

  • 内层子查询:按column2分组,统计每组的行数,只保留行数等于1的column2值(也就是仅出现一次的那些值)
  • 外层查询:通过JOIN关联原表,把这些唯一值对应的完整行筛选出来

方案2:使用窗口函数(适用于支持窗口函数的数据库,如MySQL 8+、PostgreSQL、SQL Server等)

这种方法更直观,不需要额外的JOIN操作,通过窗口函数直接给每一行标记其column2值的出现次数:

SELECT id, column2, column3
FROM (
    SELECT 
        *,
        COUNT(*) OVER(PARTITION BY column2) AS occurrence_count
    FROM your_table
) temp_table
WHERE occurrence_count = 1;

逻辑说明:

  • 内层子查询:用COUNT(*) OVER(PARTITION BY column2)给每一行计算它所在column2分组的总行数(也就是该column2值的出现次数)
  • 外层查询:筛选出出现次数等于1的行,就是你要的结果

针对你提供的示例数据,两种方案都会返回:

1 UNID1 data1
6 UNID6 data4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:19:18