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

如何在SQL Server中筛选特定列无重复的全量记录?

解决SQL Server中仅保留Item列唯一记录的查询方法

你需要筛选出Item列值在表中仅出现一次的完整记录,SELECT DISTINCT是对整行去重(只有整行完全重复才会被过滤),所以不符合需求。下面提供两种适合SQL Server的可行方案:

方法一:使用窗口函数(推荐,直观易读)

通过COUNT() OVER (PARTITION BY Item)统计每个Item的出现次数,再筛选次数为1的记录:

SELECT *
FROM (
    SELECT *,
           -- 按Item分组统计每个Item的出现次数
           COUNT(*) OVER (PARTITION BY Item) AS ItemOccurrenceCount
    FROM Bin
) AS FilteredBin
-- 只保留出现次数为1的记录
WHERE ItemOccurrenceCount = 1;

方法二:使用子查询+关联查询

先通过子查询找出所有仅出现一次的Item值,再关联原表获取完整记录:

SELECT b.*
FROM Bin b
INNER JOIN (
    -- 找出所有只出现一次的Item
    SELECT Item
    FROM Bin
    GROUP BY Item
    HAVING COUNT(*) = 1
) AS UniqueItems ON b.Item = UniqueItems.Item;

为什么你之前用HAVING COUNT没成功?

直接在SELECT *后搭配GROUP BY Item会报错,因为SQL Server要求GROUP BY的列必须包含SELECT子句中所有非聚合列。所以需要先通过子查询筛选出唯一的Item值,再和原表关联才能拿到完整的行数据。

内容的提问来源于stack exchange,提问作者Jeff Ponce de Leon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 21:48:20