选择计数为某个值的多个记录

selecting multiple records where count is some value

有一个拥有超过 50 万个值的庞大数据库,但只有一个 table 拥有所有数据。我需要针对给定条件提取其中的一些内容。

Table结构是这样的,

column_a | column_b    
A        | 30    
A        | 40    
A        | 70    
B        | 25    
B        | 45    
C        | 10    
C        | 15    
C        | 25

我需要提取计数 (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 的正确值,但每个值只有一条记录。

提前致谢, 巴希特

一种方法是 INNER JOIN 您的原始 table 到一个子查询,该子查询标识 column_a 条记录,这些记录恰好以 3 条为一组。

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;