计算SQL查询中不同行的条件

时间:2012-04-17 08:57:35

标签: mysql sql

我在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 个答案:

答案 0 :(得分:5)

试试这个:

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

答案 1 :(得分:1)

SELECT 
      COUNT(ids)
FROM 
      (SELECT 
           COUNT(ID)AS ids 
       FROM 
           mytable 
       GROUP BY 
           ID
       HAVING 
           ids>2
       )AS tbl1

答案 2 :(得分:1)

select count(*) from 
    (select count(id) as cnt,id from mytable group by id) da 
where da.cnt>2

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

答案 3 :(得分:0)

更新:

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

应该做你需要的事情