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