2015-09-09 28 views
2

我有一个MySQL表与下面的模式:MySQL查询,为值时出现不止一次对同一个客户端

表 - charges

+=============+==============+ 
| chargeName | clientId | 
+=============+==============+ 
| late fee | 123456 | 
+-------------+--------------+ 
| late fee | 123456 | 
+-------------+--------------+ 
| payment | 123456 | 
+-------------+--------------+ 
| refund | 782151 | 
+-------------+--------------+ 
| late fee | 782151 | 
+-------------+--------------+ 

我需要返回的实例,其中chargeName“滞纳金“出现在同一clientId不止一次。

例如,鉴于上述情况,我期望我的查询返回“123456”,因为该clientId有2个与其关联的“滞纳金”。

我试图从SQL Query To Obtain Value that Occurs more than once

SELECT clientId 
FROM 
    (SELECT chargeName, count(*) as Counter, clientId 
    FROM charges 
    GROUP BY `chargeName`) 
AS tbl 
WHERE Counter > 1 
AND chargeName='late fee' 
limit 1000; 

但是适应this answer,此查询只返回一行(从我更大的数据集),并返回ClientID的只有它这么清楚它是有关1个滞纳金不工作。

如何才能返回chargeName“滞纳金”出现在同一clientId多次的情况。

+0

这是一个由'having' count> 1组 – Drew

回答

3

你可以通过GROUP BY和HAVING来完成。

SELECT clientID, chargeName 
FROM charges 
WHERE chargeName LIKE 'late fee' 
GROUP BY clientID HAVING count(clientID) > 1