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

Cách SELECT min và max từ một phần của bảng trong MySQL?

Tìm MIN/MAX trên tập con (subset) của bảng trong MySQL

Sử dụng subquery với LIMIT để giới hạn tập dữ liệu, sau đó áp dụng MIN() và MAX().

Cú pháp

SELECT MIN(yourColumn) AS minAlias, MAX(yourColumn) AS maxAlias
FROM (SELECT yourColumn FROM yourTableName LIMIT limitValue) AS subquery;

Ví dụ: Min/Max của 3 hàng đầu tiên

Tạo bảng:

mysql> CREATE TABLE MinAndMaxValueDemo (
    -> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> Value INT
    -> );

Chèn dữ liệu:

mysql> INSERT INTO MinAndMaxValueDemo(Value) VALUES (10), (100), (50), (40);

Dữ liệu đầy đủ:

+----+-------+
| Id | Value |
+----+-------+
| 1  | 10    |
| 2  | 100   |
| 3  | 50    |
| 4  | 40    |
+----+-------+

Tìm Min/Max của 3 hàng đầu (theo Id):

mysql> SELECT MIN(Value) AS MinimumValue, MAX(Value) AS MaximumValue
FROM (SELECT Value FROM MinAndMaxValueDemo LIMIT 3) AS tbl1;

Kết quả (3 hàng đầu: 10, 100, 50 → Min=10, Max=100):

+--------------+--------------+
| MinimumValue | MaximumValue |
+--------------+--------------+
| 10           | 100          |
+--------------+--------------+

Giải thích

  • Subquery (SELECT Value FROM ... LIMIT 3) lấy 3 hàng đầu
  • Outer query tính MIN/MAX trên tập con đó
  • Alias tbl1 bắt buộc cho derived table

Các biến thể hữu ích

  • Có ORDER BY trong subquery: (SELECT Value FROM t ORDER BY Id DESC LIMIT 3) → 3 hàng cuối
  • Có WHERE: (SELECT Value FROM t WHERE Id > 10 LIMIT 5)
  • Kết hợp OFFSET: LIMIT 5 OFFSET 10 (hàng 11-15)

Lưu ý hiệu năng

  • Subquery LIMIT thường được tối ưu tốt
  • Nếu cần MIN/MAX trên partition/window: dùng Window Function (MySQL 8.0+)
  • MIN()/MAX() có thể dùng index nếu có điều kiện WHERE phù hợp