Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Truy vấn MySQL hiển thị bản ghi có số lượng lớn nhất trong nhóm kèm các cột khác

Tìm giá trị xuất hiện nhiều nhất trong MySQL với GROUP BY và HAVING

Khi cần tìm bản ghi có tần suất xuất hiện cao nhất trong một cột, chúng ta kết hợp GROUP BY với mệnh đề HAVING và truy vấn con.

1. Tạo bảng và chèn dữ liệu

mysql> CREATE TABLE DemoTable (
    Value INT
);

Chèn 11 bản ghi (có giá trị lặp lại):

mysql> INSERT INTO DemoTable VALUES (88), (88), (88), (99), (99), (99), (99), (100), (100), (88), (88);

2. Xem dữ liệu

mysql> SELECT * FROM DemoTable;

Kết quả:

+-------+
| Value |
+-------+
| 88    |
| 88    |
| 88    |
| 99    |
| 99    |
| 99    |
| 99    |
| 100   |
| 100   |
| 88    |
| 88    |
+-------+

3. Truy vấn tìm giá trị có số lượng lớn nhất

mysql> SELECT Value, COUNT(*) AS NumberOfCount
    FROM DemoTable
    GROUP BY Value
    HAVING COUNT(*) = (
        SELECT COUNT(*) AS NumberOfCount
        FROM DemoTable
        GROUP BY Value
        ORDER BY NumberOfCount DESC
        LIMIT 1
    );

4. Kết quả

+-------+---------------+
| Value | NumberOfCount |
+-------+---------------+
| 88    | 5             |
+-------+---------------+

Giải thích: Giá trị 88 xuất hiện 5 lần (nhiều nhất), 99 xuất hiện 4 lần, 100 xuất hiện 2 lần. Truy vấn con tìm số lượng lớn nhất (5), sau đó HAVING lọc nhóm có count bằng giá trị đó.