Bạn đang ở rất gần với truy vấn cuối cùng. Sau đây tìm thấy một chế độ:
SELECT value, occurs
FROM (SELECT value,count(*) as occurs
FROM t200
GROUP BY `value`
LIMIT 1
) T1
Tuy nhiên, tôi nghĩ câu hỏi của bạn là về nhiều chế độ:
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
);
CHỈNH SỬA:
Điều này dễ dàng hơn nhiều trong hầu hết các cơ sở dữ liệu khác. MySQL không hỗ trợ with
cũng không phải các chức năng cửa sổ / phân tích.
Truy vấn của bạn (hiển thị bên dưới) không thực hiện những gì bạn nghĩ:
SELECT value, occurs
FROM (SELECT value, count(*) as occurs
FROM t200
GROUP BY `value`
) T1
HAVING occurs = max(occurs) ;
having
mệnh đề đề cập đến biến occurs
nhưng có sử dụng max(occurs)
. Do việc sử dụng max(occurs)
đây là một truy vấn tổng hợp trả về một hàng, tóm tắt tất cả các hàng từ truy vấn con.
Biến occurs
không sử dụng để phân nhóm. Vậy, MySQL sử dụng giá trị nào? Nó sử dụng một tùy ý giá trị từ một trong các hàng trong truy vấn con. Giá trị tùy ý này có thể khớp hoặc có thể không. Nhưng, giá trị chỉ đến từ một hàng. Không có sự lặp lại nào đối với nó.