MySQL 查询对于同一 clientId 多次出现的值

标签 mysql sql database

我有一个具有以下架构的 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/

相关文章:

mysql - 获取 user=1 存在的所有其他用户名

sql - 修改 SQL 语句以追加表中的列

mysql - 在 mysql 中选择名称中包含空格的数据库

sql-server - T-SQL 将带前导零的数字插入表中

mysql - SQL会计系统中的分层汇总

php - 简短的 php/mysql 查询删除两个表选择的位置

MySQL:使用 InnoDB 分组主键

mysql - 找出哪个数据库条目已更改

SQLite 创建预填充的 FTS 表

sql - B和C有多少个A?