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

SQL查询中DISTINCT不生效,返回结果ClientID重复如何解决?

问题根因

DISTINCT 关键字的去重规则是对 SELECT 后列出的所有字段的整体组合去重,而非仅作用于第一个字段。你当前的查询同时返回了 ClientID、ClientName、PurchaseID 三个字段:同一个客户如果有多笔购买记录,就会对应多个不同的PurchaseID,此时即使ClientID相同,整行数据的组合也属于唯一值,自然会出现重复的ClientID。

修复方案

你的需求是获取有过购买行为的去重客户列表,不需要返回购买ID,选择以下任意一种方案即可:

  • 方案1:直接移除PurchaseID字段,保留DISTINCT
    SELECT DISTINCT c.ClientID, c.ClientName
    FROM Purchases o 
    JOIN Clients c ON o.ClientID = c.ClientID 
    ORDER BY c.ClientID ASC;
    
    调整后DISTINCT仅对客户ID和客户名称的组合去重,每个客户只会返回一行结果。
  • 方案2:用EXISTS子查询实现,性能更优
    数据量较大时推荐该写法,不需要关联全量购买表后再去重,只要判断客户存在购买记录就会返回,执行效率更高:
    SELECT c.ClientID, c.ClientName
    FROM Clients c
    WHERE EXISTS (
        SELECT 1 FROM Purchases o 
        WHERE o.ClientID = c.ClientID
    )
    ORDER BY c.ClientID ASC;
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 14:54:04