繁体   English   中英

选择计数值有价值的多个记录

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM