在MySQL中可以计算一个“组”中出现的次数吗?

yrdbyhpb  于 2023-02-15  发布在  Mysql
关注(0)|答案(1)|浏览(97)

如果标题有误导性,我很抱歉,我真的不知道我想完成的任务的术语。但是让我们考虑一下这个表格:

CREATE TABLE entries (
  id INT NOT NULL,
  number INT NOT NULL
);

假设它包含与每个ID关联的四个数字,如下所示:

id number
1  0
1  9
1  17
1  11
2  5
2  8
2  9
2  0
.
.
.

是否可以只使用SQL查询来计算与id关联的任意两个给定数字(元组)的匹配数?
假设我想计算与唯一id相关联的数字0和9的出现次数。在上面的示例数据中,0和9确实出现了两次(一次是id=1,另一次是id=2)。我想不出如何编写SQL查询来解决这个问题。这可能吗?也许我的表结构是错误的,但我的数据现在就是这样组织的。
我试过子查询、联合、连接和其他所有方法,但还没有找到一种方法。

jei2mxaa

jei2mxaa1#

可以使用GROUP BYHAVING子句:

SELECT COUNT(s.id)
FROM(
     SELECT t.id
     FROM YourTable t
     WHERE t.number in(0,9)
     GROUP BY t.id
     HAVING COUNT(distinct t.number) = 2) s

或者使用EXISTS()

SELECT COUNT(distinct t.id)
FROM YourTable t
WHERE EXISTS(SELECT 1 FROM YourTable s
             WHERE t.id = s.id and s.id IN(0,9)
             HAVING COUNT(distinct s.number) = 2)

相关问题