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

Làm thế nào để lấy giá trị MAX và MIN trong một truy vấn MySQL?

Sử dụng hàm tổng hợp MIN() và MAX() trên các cột cần thiết trong cùng một SELECT.

Tạo bảng

mysql> CREATE TABLE DemoTable (FirstValue INT, SecondValue INT);

Chèn dữ liệu

mysql> INSERT INTO DemoTable VALUES(10, 30), (30, 60), (100, 500), (50, 80);

Xem dữ liệu

mysql> SELECT * FROM DemoTable;
+------------+-------------+
| FirstValue | SecondValue |
+------------+-------------+
| 10         | 30          |
| 30         | 60          |
| 100        | 500         |
| 50         | 80          |
+------------+-------------+

Lấy MIN và MAX của 2 cột cùng lúc

mysql> SELECT 
    -> MIN(FirstValue), MIN(SecondValue),
    -> MAX(FirstValue), MAX(SecondValue)
    -> FROM DemoTable;
+-----------------+------------------+-----------------+------------------+
| MIN(FirstValue) | MIN(SecondValue) | MAX(FirstValue) | MAX(SecondValue) |
+-----------------+------------------+-----------------+------------------+
| 10              | 30               | 100             | 500              |
+-----------------+------------------+-----------------+------------------+

Mở rộng: Kèm theo ID của hàng MIN/MAX

MySQL không hỗ trợ trực tiếp ARG_MIN/ARG_MAX. Dùng subquery:

SELECT 
    (SELECT Id FROM DemoTable ORDER BY FirstValue ASC LIMIT 1) AS Id_Min_First,
    (SELECT Id FROM DemoTable ORDER BY FirstValue DESC LIMIT 1) AS Id_Max_First,
    MIN(FirstValue) AS Min_First, MAX(FirstValue) AS Max_First
FROM DemoTable;

Window Functions (MySQL 8.0+)

SELECT 
    FirstValue,
    MIN(FirstValue) OVER () AS Min_First,
    MAX(FirstValue) OVER () AS Max_First
FROM DemoTable;

Tóm tắt hàm tổng hợp

HàmMô tảBỏ qua NULL?
MIN()Giá trị nhỏ nhấtCó
MAX()Giá trị lớn nhấtCó
SUM()TổngCó
AVG()Trung bìnhCó
COUNT()Số lượngCOUNT(col) có, COUNT(*) không