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

SQL查询实现:筛选曾在不同房间参加面试的人员姓名

正确SQL写法
SELECT Name
FROM worktable
GROUP BY Name
HAVING COUNT(DISTINCT Room) > 1;

逻辑说明

  • 用GROUP BY Name将所有记录按姓名分组,同一名面试者的所有面试记录会被归到同一分组中
  • COUNT(DISTINCT Room)会统计每个分组内不重复的房间数量,自动忽略同一个人在同一房间多次面试的重复统计
  • HAVING子句用于过滤分组后的聚合结果,只保留不同房间数大于1的分组,也就是在至少2个不同房间参加过面试的人员

样例验证

对你提供的测试数据执行上述SQL,返回结果只有Sam,符合你的需求:

  • Jerry仅在D房间面试,不同房间数为1,不返回
  • Sam先后在A、D两个房间面试,不同房间数为2,符合要求
  • Sarah仅在A房间面试,不同房间数为1,不返回
  • Will仅在B房间面试,不同房间数为1,不返回

原写法问题说明

你原来的代码中DISTINCT用法错误,DISTINCT是用于对最终查询的整行结果去重的关键字,不能直接搭配比较运算符做判断。统计不同值的数量需要和聚合函数COUNT结合使用,且分组后的聚合结果过滤需要用HAVING子句,不能直接写在FROM之后。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 08:36:06