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

Gom hàng MySQL để lấy giá trị lớn nhất tương ứng từ các ID trùng lặp

Để làm điều này, bạn có thể sử dụng mệnh đề GROUP BY. Để tìm giá trị lớn nhất, hãy sử dụng hàm MAX(). Hãy cùng tạo một bảng trước:

mysql> CREATE TABLE DemoTable1804 (
    Id INT,
    Marks1 INT,
    Marks2 INT,
    Marks3 INT
    ); Query OK, 0 rows affected (0.00 sec)

Chèn một số bản ghi vào bảng bằng lệnh INSERT:

mysql> INSERT INTO DemoTable1804 VALUES(1,56,89,34); Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO DemoTable1804 VALUES(1,98,NULL,94); Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO DemoTable1804 VALUES(2,34,45,78); Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO DemoTable1804 VALUES(2,NULL,67,NULL); Query OK, 1 row affected (0.00 sec)

Hiển thị tất cả bản ghi từ bảng bằng lệnh SELECT:

mysql> SELECT * FROM DemoTable1804;

Kết quả sẽ như sau:

+------+--------+--------+--------+
| Id   | Marks1 | Marks2 | Marks3 |
+------+--------+--------+--------+
|    1 |     56 |     89 |     34 |
|    1 |     98 |   NULL |     94 |
|    2 |     34 |     45 |     78 |
|    2 |   NULL |     67 |   NULL |
+------+--------+--------+--------+
4 rows in set (0.00 sec)

Dưới đây là truy vấn để gom hàng và tìm giá trị lớn nhất:

mysql> SELECT Id, MAX(Marks1), MAX(Marks2), MAX(Marks3)
    FROM DemoTable1804
    GROUP BY Id;

Kết quả sẽ như sau:

+------+-------------+-------------+-------------+
| Id   | MAX(Marks1) | MAX(Marks2) | MAX(Marks3) |
+------+-------------+-------------+-------------+
|    1 |          98 |          89 |          94 |
|    2 |          34 |          67 |          78 |
+------+-------------+-------------+-------------+
2 rows in set (0.00 sec)