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

MySQL复杂查询场景:如何筛选仅服务过客户2且无其他客户的员工

正确SQL实现方案

你原有查询已经完成了「仅服务过1位客户」的过滤,只需要追加唯一客户为2的判断即可,注意你原有SQL里存在字段拼写错误:emplyoee 拼写错误,正确应为 employee。

写法1:单GROUP BY查询(写法简洁)

SELECT employee, client 
FROM employee_client 
GROUP BY employee 
HAVING COUNT(*) = 1 AND MAX(client) = 2;

逻辑说明:因为已经通过COUNT(*) = 1确保每个员工分组下只有一条记录,所以MAX(client)(也可以替换为MIN(client))就是该员工唯一服务的客户,直接判断等于2即可。

写法2:子查询嵌套(兼容性更高、逻辑更直观)

SELECT * 
FROM employee_client 
WHERE client = 2 
AND employee IN (
    SELECT employee 
    FROM employee_client 
    GROUP BY employee 
    HAVING COUNT(*) = 1
);

逻辑说明:

  • 子查询先筛选出所有仅服务过1位客户的员工列表
  • 外层查询再过滤出这些员工中服务的客户为2的记录

两种写法都可以得到你需要的employee=b、client=2的结果,自动排除两类不符合条件的记录:

  • 员工c服务的客户数大于1,不会出现在过滤结果中
  • 员工d虽然仅服务1位客户,但对应的客户不是2,会被过滤

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 10:54:04