あなたは最後のクエリに非常に近いです。以下は1つを見つけます モード:
SELECT value, occurs
FROM (SELECT value,count(*) as occurs
FROM t200
GROUP BY `value`
LIMIT 1
) T1
ただし、あなたの質問は複数のモードに関するものだったと思います:
SELECT value, occurs
FROM (SELECT value, count(*) as occurs
FROM t200
GROUP BY `value`
) T1
WHERE occurs = (select max(occurs)
from (select `value`, count(*) as occurs
from t200
group by `value`
) t
);
編集:
これは、他のほとんどのデータベースでははるかに簡単です。 MySQLはどちらのwith
もサポートしていません ウィンドウ/分析機能もありません。
あなたのクエリ(以下に表示)は、あなたが思っていることをしません:
SELECT value, occurs
FROM (SELECT value, count(*) as occurs
FROM t200
GROUP BY `value`
) T1
HAVING occurs = max(occurs) ;
最後のhaving
句は変数occurs
を参照します ただし、max(occurs)
を使用します 。 max(occurs)
を使用しているため これは、サブクエリからのすべての行を要約した1つの行を返す集計クエリです。
変数occurs
グループ化には使用していません。では、MySQLはどのような値を使用しますか? 任意を使用します サブクエリの行の1つからの値。この任意の値は一致する場合と一致しない場合があります。ただし、値は1つの行からのみ取得されます。繰り返しはありません。