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

如何筛选c_id列仅出现一次的数据?SQL语句问题求助

原始数据表格

idc_idnumber
3444343377752
3446353473747
3447353532061
3454373379243
3455383464467
3456383377493

期望结果表格

idc_idnumber
3444343377752
3454373379243

问题分析

你当前的SQL语句存在两个核心问题:

  1. GROUP BY c_id, number会将同一c_id但不同number的行拆分为独立分组,每个分组的计数自然为1,完全起不到筛选c_id仅出现一次的作用。
  2. 语句中COUNT(cart_id)是笔误,你的数据表中不存在cart_id字段,应该使用COUNT(*)或COUNT(c_id)。

解决方案

方案1:子查询筛选唯一c_id后关联原表

先统计每个c_id的出现次数,筛选出仅出现1次的c_id,再关联原表获取完整行数据:

SELECT t.id, t.c_id, t.number
FROM your_table t
JOIN (
    SELECT c_id
    FROM your_table
    GROUP BY c_id
    HAVING COUNT(*) = 1
) AS unique_cids ON t.c_id = unique_cids.c_id;

方案2:窗口函数(更简洁)

使用窗口函数COUNT() OVER (PARTITION BY c_id)计算每个c_id的全局出现次数,直接筛选次数为1的行:

SELECT id, c_id, number
FROM (
    SELECT 
        id, c_id, number,
        COUNT(*) OVER (PARTITION BY c_id) AS c_id_count
    FROM your_table
) AS sub
WHERE c_id_count = 1;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 08:40:36