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

基于同表引用ID,查询推荐人数达3人的用户SQL实现

可以实现,对应的SQL查询语句如下

要筛选出推荐人数为3人的用户,我们需要先统计每个用户被多少人作为推荐人(即ref_id等于该用户id的记录数量),再筛选出数量恰好为3的用户。

方法一:使用子查询

SELECT name
FROM user
WHERE id IN (
    SELECT ref_id
    FROM user
    GROUP BY ref_id
    HAVING COUNT(*) = 3
);

方法二:使用JOIN(性能更优,适合大数据量)

SELECT u.name
FROM user u
INNER JOIN (
    SELECT ref_id, COUNT(*) AS recommend_count
    FROM user
    GROUP BY ref_id
    HAVING recommend_count = 3
) AS stats ON u.id = stats.ref_id;

结果说明

根据你提供的原始数据,执行上述语句后会得到Sue(她的id=3,有3条记录的ref_id=3)。如果期望结果包含Sam,可能是以下两种情况之一:

  1. 原始数据存在笔误(例如id=10的ref_id不是1),导致Sam的推荐人数实际为3;
  2. 需求是筛选推荐人数≥3的用户,此时只需将HAVING条件改为COUNT(*) >= 3,即可同时得到Sam(推荐人数4)和Sue(推荐人数3)。

内容的提问来源于stack exchange,提问作者Cheam Huoy San

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:50:33