[英]selecting multiple records where count is some value
有一个巨大的数据库,具有超过500k的值,但是只有一个表包含所有数据。 我需要为给定条件提取其中的一些。
表结构是这样的,
column_a | column_b
A | 30
A | 40
A | 70
B | 25
B | 45
C | 10
C | 15
C | 25
我需要提取所有具有count(column_a)= 3的数据。要注意的是,我也需要获取所有三个记录。 像这样,
column_a | column_b
A | 30
A | 40
A | 70
C | 10
C | 15
C | 25
我试图用这样的查询来做到这一点
select column_a,column_b group by column_a having count(*)=3;
在这里,我得到了column_a的正确值,但每个记录只有一个记录。
预先感谢,Bhashithe
一种方法是将原始表INNER JOIN
到一个子查询,该子查询标识以正好3个为一组的column_a
记录。
SELECT t1.column_a, t1.column_b
FROM table t1
INNER JOIN
(
SELECT column_a, COUNT(*)
FROM table
GROUP BY column_a
HAVING COUNT(*) = 3
) t2
ON t1.column_a = t2.column_a
如果需要,可以使用嵌套查询。 在此,内部查询获取column_a
大小等于3的记录,而外部查询使用'IN'
子句显示所有记录。
SELECT t.column_a, t.column_b FROM table t
WHERE t.column_a IN
(
SELECT t1.column_a FROM table t1
GROUP BY t1.column_a
HAVING COUNT(t1.column_a) = 3
)
ORDER BY t.column_a;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.