Anda sangat dekat dengan permintaan terakhir. Berikut ini menemukan satu modus:
SELECT value, occurs
FROM (SELECT value,count(*) as occurs
FROM t200
GROUP BY `value`
LIMIT 1
) T1
Saya pikir pertanyaan Anda adalah tentang beberapa mode:
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
);
EDIT:
Ini jauh lebih mudah di hampir semua database lainnya. MySQL tidak mendukung with
atau fungsi jendela/analitik.
Kueri Anda (ditampilkan di bawah) tidak melakukan apa yang Anda pikirkan:
SELECT value, occurs
FROM (SELECT value, count(*) as occurs
FROM t200
GROUP BY `value`
) T1
HAVING occurs = max(occurs) ;
having
terakhir klausa mengacu pada variabel occurs
tetapi menggunakan max(occurs)
. Karena penggunaan max(occurs)
ini adalah kueri agregasi yang mengembalikan satu baris, meringkas semua baris dari subkueri.
Variabel occurs
tidak digunakan untuk pengelompokan. Jadi, nilai apa yang digunakan MySQL? Ini menggunakan sewenang-wenang nilai dari salah satu baris di subquery. Nilai arbitrer ini mungkin cocok, atau mungkin tidak. Tapi, nilainya hanya berasal dari satu baris. Tidak ada iterasi di atasnya.