选择计数为某个值的多个记录
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;
有一个拥有超过 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;