0

ID 列を持つ MySQL データベースにテーブルがあります。これはテーブルのキーではなく、複数の行が同じ 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 に答える