Mysql 复杂的内连接场景

Mysql complicated Inner join scenario

table 包含员工和他们为之工作的客户。

employee client
a 1
a 4
b 2
c 1
c 2
d 3

我需要找一个只为一个客户工作的员工,这个客户是特殊客户=2 因此结果应该是“b,2”,因为“b”和“d”只是为一个客户工作的员工,但应该预期“b”是因为他为客户=2工作而“d”不是

预期结果:

employee client
b 2

结果不应包含“c”,因为“c”适用于 client=2 但也适用于另一个 client=1

我尝试了以下查询,它 returns 所有只为一个客户(所有客户中的任何一个)工作但不确定如何强加客户的员工应该是“2”

SELECT COUNT(*),employee FROM employee_client GROUP BY emplyoee HAVING COUNT(*) = 1;

您需要在 HAVING 子句中进行条件聚合:

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

参见demo