首页 > 解决方案 > MySQL 语句仅返回每个 ID 具有完全相同数量的行

问题描述

桌子t1

id | provider
_________
1  | bob
1  | ted

2  | bob
2  | bob
2  | ted
2  | ted

3  | bob
3  | bob
3  | ted
3  | ted
3  | joe
3  | joe

4  | bob
4  | bob
4  | ted
4  | joe
4  | joe

返回 id 的 MySQL 语句,其中所有名称在每个 ID 中显示的数量相同。对于 ID 4,名称“ted”仅出现一次,而其他名称出现两次,因此将从结果中排除。

id
__
1
2
3

标签: mysqlsql

解决方案


使用两个级别的聚合:

select id
from (select id, name, count(*) as cnt
      from t1
      group by id, name
     ) ni
group by id
having min(cnt) = max(cnt);

推荐阅读