0

我在 MySQL 数据库中有一个带有 ID 列的表。这不是表的键,并且多行可以具有相同的 ID。

我不太了解 SQL,但我已经知道如何获取不同 ID 的数量:

SELECT COUNT(DISTINCT ID) FROM mytable;

现在我只想计算在表中出现超过 2 次的那些 ID。

因此,如果 ID 列包含值

 3 4 4 5 5 5 6 7 7 7

查询应返回 2。

我不知道该怎么做。我希望有一个人可以帮助我!

顺便说一句,我的表包含大量行。因此,如果有多种可能性,我也很乐意知道哪种解决方案最有效。

4

4 回答 4

5

试试这个:

SELECT COUNT(ID) FROM (
    SELECT ID FROM mytable
    GROUP BY ID
    HAVING COUNT(ID) > 2) p
于 2012-04-17T09:01:39.763 回答
1
SELECT 
      COUNT(ids)
FROM 
      (SELECT 
           COUNT(ID)AS ids 
       FROM 
           mytable 
       GROUP BY 
           ID
       HAVING 
           ids>2
       )AS tbl1
于 2012-04-17T09:04:30.150 回答
1
select count(*) from 
    (select count(id) as cnt,id from mytable group by id) da 
where da.cnt>2

内部查询将为您提供每个 id 有多少元素。外部查询将对此进行过滤。

于 2012-04-17T09:06:00.473 回答
0

更新 :

SELECT count(ID) 
FROM (
SELECT ID FROM mytable
GROUP BY ID
HAVING count(ID) > 2
) p

应该做你需要的

于 2012-04-17T09:03:50.257 回答