我有一个具有以下架构的 MySQL 表:
表 - 费用
+=============+==============+
| chargeName | clientId |
+=============+==============+
| late fee | 123456 |
+-------------+--------------+
| late fee | 123456 |
+-------------+--------------+
| payment | 123456 |
+-------------+--------------+
| refund | 782151 |
+-------------+--------------+
| late fee | 782151 |
+-------------+--------------+
我需要返回对于同一 clientId
多次出现 chargeName
“滞纳金”的实例。
例如,鉴于上述情况,我希望我的查询返回“123456”,因为 clientId
有 2 个与之关联的“滞纳金”。
我尝试从 this answer 改编 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;
但是,此查询仅返回一行(来 self 更大的数据集),并且返回的 clientId 仅具有 1 个与之相关的滞纳金,因此显然它不起作用。
如何返回针对同一 clientId
多次出现 chargeName
“滞纳金”的实例。
最佳答案
您可以通过 GROUP BY 和 HAVING 来完成。
SELECT clientID, chargeName
FROM charges
WHERE chargeName LIKE 'late fee'
GROUP BY clientID HAVING count(clientID) > 1
关于MySQL 查询对于同一 clientId 多次出现的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32490481/