2012-07-25 40 views
0

我有一個表中有原始數據。爲了檢查不需要的額外數據,我試圖確定哪些id(tickerid是列,earningsdata是表)具有超過50行的數據。它必須遍歷所有當前的ticker id(來自不同的表,earningcrakers),並且只選擇那些具有超過50行數據的id。我可以做一個選擇*通過ID,但我不知道如何通過所有的IDMYSQL sql在表中查找id的數量大於x

回答

1

您可以通過每個tickerid使用GROUP BY到組,這將讓您使用聚合與每個tickeridCOUNT信息迭代/ SUM/AVG/etc ...

爲了您的目的,我們必須使用COUNT

然後HAVING條款過濾掉tickerid S作50行以內:

SELECT tickerid 
FROM earningsdata 
GROUP BY tickerid 
HAVING COUNT(*) > 50 

這將只是給你的tickerid S作超過50行的名單,但是,如果你想

SELECT a.* 
FROM earningsdata a 
INNER JOIN 
(
    SELECT tickerid 
    FROM earningsdata 
    GROUP BY tickerid 
    HAVING COUNT(*) > 50 
) b ON a.tickerid = b.tickerid 
0
SELECT tickerid 
FROM earningstickers 
WHERE tickerid 
IN 
    (SELECT tickerid 
    FROM earningsdata 
    GROUP BY tickerid 
    HAVING COUNT(*) > 50 
    ) 
:顯示在此列表中的所有行和 tickerid S的信息,您可以通過將上述查詢到加入針對此列表中的表