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

Truy vấn MySQL tìm hai điểm cao nhất (top 2) theo nhóm

Tạo bảng điểm người chơi

mysql> CREATE TABLE DemoTable1383 (
    -> Id INT,
    -> PlayerScore INT
    -> );
Query OK, 0 rows affected (0.90 sec)
mysql> INSERT INTO DemoTable1383 VALUES
    -> (200,78),(200,89),(200,89),(200,87),(203,97),(200,57);

Dữ liệu

mysql> SELECT * FROM DemoTable1383;
+------+-------------+
| Id   | PlayerScore |
+------+-------------+
| 200  | 78          |
| 200  | 89          |
| 200  | 89          |
| 200  | 87          |
| 203  | 97          |
| 200  | 57          |
+------+-------------+

Truy vấn: MAX theo Id, sắp xếp giảm dần

mysql> SELECT Id, MAX(PlayerScore)
    -> FROM DemoTable1383
    -> GROUP BY Id
    -> ORDER BY MAX(PlayerScore) DESC;

Kết quả: Top 2 Id có điểm cao nhất

+------+------------------+
| Id   | MAX(PlayerScore) |
+------+------------------+
| 203  | 97               |
| 200  | 89               |
+------+------------------+

Lưu ý: Truy vấn này trả về điểm cao nhất mỗi Id, sau đó sắp xếp. Nếu cần top 2 điểm cao nhất tổng thể (không nhóm theo Id), dùng SELECT DISTINCT PlayerScore ... ORDER BY PlayerScore DESC LIMIT 2.