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

SQL中WHERE IN子句如何匹配多列子查询中的单列数据

解决WHERE IN子查询多列匹配问题

你当前的子查询返回了hacker_id和聚合统计列两列,但IN子句要求子查询必须返回单列,所以无法正确匹配。要让WHERE IN只匹配结果集中的hacker_id列,只需修改子查询,让它仅返回hacker_id这一列即可。

修改后的完整查询示例

select 
    hacker_id, name 
from 
    hacker_t 
where 
    hacker_id in (
        select hacker_t.hacker_id
        from hacker_t
        group by hacker_t.hacker_id
        -- 如果你需要基于count值筛选,比如只保留count=2的hacker,可添加HAVING子句
        having count(hacker_t.score) = 2
    );

关键说明

  • 子查询必须只返回hacker_id列,这样IN才能明确用该列与外层的hacker_id做匹配
  • 因为使用了count()聚合函数,子查询必须加上GROUP BY hacker_id来按用户分组统计
  • 如果需要对统计结果做筛选(比如只保留有2条score记录的用户),通过HAVING子句实现,不要用WHERE(WHERE不能直接过滤聚合结果)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 05:30:57