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

如何用MySQL查询存在多个sid值的异常用户ID

找出对应多个sid的异常userid解决方案

针对你的需求,这里提供几种高效的MySQL查询语句,适用于500万条数据的场景:

方案一:GROUP BY + HAVING(最简洁高效)

这是处理这类分组统计问题的经典写法,直接筛选出拥有多个不同sid的userid:

SELECT userid
FROM your_table_name
GROUP BY userid
HAVING COUNT(DISTINCT sid) > 1;

逻辑说明

  • GROUP BY userid 将相同userid的记录归为一组
  • COUNT(DISTINCT sid) 统计每组内不同sid的数量,排除同一sid重复出现的情况
  • HAVING COUNT(...) > 1 筛选出sid数量大于1的userid,也就是异常记录

性能优化建议

因为表数据量较大(500万条),建议创建userid和sid的联合索引,大幅提升分组统计的效率:

CREATE INDEX idx_userid_sid ON your_table_name(userid, sid);

方案二:窗口函数(MySQL 8.0+适用)

如果需要同时查看异常userid对应的所有sid,或者使用MySQL 8.0及以上版本,可使用窗口函数实现:

SELECT DISTINCT userid
FROM (
    SELECT 
        userid, 
        sid,
        COUNT(DISTINCT sid) OVER (PARTITION BY userid) AS sid_count
    FROM your_table_name
) t
WHERE sid_count > 1;

逻辑说明

  • 子查询中用PARTITION BY userid按userid分区,计算每个分区内的不同sid数量
  • 外层查询筛选出sid数量大于1的userid,用DISTINCT去重

注意:将语句中的your_table_name替换为你的实际表名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 10:35:04