MYSQL sql在表中查找计数大于x的id

din*_*tom 1 mysql

我有一个包含原始数据的表。为了检查不需要的额外数据,我试图确定哪些 id(tickerid 是列,收益数据是表)有超过 50 行数据。它必须循环遍历所有当前的股票代码 ID(来自不同的表,收益股票)并仅选择那些具有超过 50 行数据的 ID。我可以通过 id 进行 select * 但我不知道如何迭代所有 id

Zan*_*ien 5

您可以使用GROUP BYgroup by every tickerid,这将使您能够访问与每个相关的聚合信息,tickerid例如COUNT/ SUM/ AVG/etc...

为了您的目的,我们必须使用COUNT.

然后该HAVING子句过滤掉tickerid50 行或更少的 s:

SELECT tickerid
FROM earningsdata
GROUP BY tickerid
HAVING COUNT(*) > 50
Run Code Online (Sandbox Code Playgroud)

tickerid这只会为您提供超过 50 行的列表,但是如果您想显示tickerid此列表中的所有行和信息,您可以通过将上述查询合并到该列表中来将表连接到此列表:

SELECT a.*
FROM earningsdata a
INNER JOIN
(
    SELECT tickerid
    FROM earningsdata
    GROUP BY tickerid
    HAVING COUNT(*) > 50
) b ON a.tickerid = b.tickerid
Run Code Online (Sandbox Code Playgroud)