Để lấy cả giá trị nhỏ nhất (MIN) và lớn nhất (MAX) trong một truy vấn đơn lẻ, bạn có thể sử dụng UNION kết hợp hai truy vấn con (subquery) hoặc dùng CASE WHEN. Cách dùng UNION như sau:
Ví dụ minh họa
Tạo bảng giá:
mysql> create table DemoTable (
Price int
);
Chèn dữ liệu:
mysql> insert into DemoTable values(88); mysql> insert into DemoTable values(100); mysql> insert into DemoTable values(98); mysql> insert into DemoTable values(120);
Hiển thị dữ liệu:
mysql> select * from DemoTable;
Kết quả:
+-------+ | Price | +-------+ | 88 | | 100 | | 98 | | 120 | +-------+
Truy vấn UNION lấy MIN và MAX
mysql> select Price from DemoTable where Price=(select min(Price) from DemoTable) UNION select Price from DemoTable where Price=(select max(Price) from DemoTable);
Kết quả:
+-------+ | Price | +-------+ | 88 | | 120 | +-------+
Giải thích:
- Truy vấn con 1: Tìm hàng có Price = MIN(Price) → 88
- Truy vấn con 2: Tìm hàng có Price = MAX(Price) → 120
UNION: Gộp 2 kết quả, tự động loại trùng (nếu MIN = MAX)
Cách thay thế hiệu quả hơn: Sử dụng SELECT MIN(Price) AS MinPrice, MAX(Price) AS MaxPrice FROM DemoTable; trả về 1 hàng 2 cột, hiệu suất tốt hơn vì chỉ quét bảng 1 lần thay vì 3 lần như UNION.