在MySQL表中查找“异类”值

5
我有一个名为accounts的MySQL表。在这个表中,有一个字段叫做salesmanager_id。99%的情况下,该字段中的值对于特定客户的所有帐户始终相同(由customer_id指定)。
我想要做的是找到分配给超过一个销售经理的客户的customer_id。例如:
+------------------------------------+
| id | customer_id | salesmanager_id |
|------------------------------------|
| 1  | 12          | 4               |
| 2  | 12          | 4               |
| 3  | 14          | 3               | <-- I want this customer_id
| 4  | 14          | 4               |
+------------------------------------+

在上面的示例中,customer_id 14 同时被分配了 salesmanager_id 3 和 4。我想在我的列表中检索出该 customer_id
我尝试了以下查询,但它返回了一个空结果(虽然我确定至少有一些差异)。
SELECT `name`, `customer_id` AS `customer`, `salesmanager_id` FROM `accounts`
WHERE `salesmanager_id` NOT IN (
    SELECT `salesmanager_id` FROM `accounts` a
    LEFT JOIN `customers` c ON (a.customer_id = c.id)
    WHERE a.customer_id=c.id
) GROUP BY `customer`;
1个回答

13
SELECT 
    customer_id
FROM 
    accounts
GROUP BY 
    customer_id
HAVING 
    COUNT(DISTINCT salesmanager_id) > 1

这基本上是获取每个customer_id的所有salesmanager_id,如果有多个唯一的salesmanager_id值,则返回customer_id


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接