选择多个记录,其中count是某个值

时间:2016-01-30 05:54:48

标签: mysql count record where-clause

有一个超过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

2 个答案:

答案 0 :(得分:3)

一种方法是将原始表格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

答案 1 :(得分:1)

如果需要,您可以使用嵌套查询。 这里,内部查询获取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;