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

Truy vấn MySQL lấy giá trị nhỏ nhất từ các giá trị lớn nhất của hai bảng

Tìm MIN của các MAX từ hai bảng với UNION

Sử dụng subquery với UNION gộp giá trị MAX từ mỗi bảng, rồi lấy MIN của tập kết quả.

Tạo bảng 1 và dữ liệu

mysql> create table DemoTable1 ( Value int ); 
mysql> insert into DemoTable1 values(60), (78), (57);
+-------+ 
| Value | 
+-------+ 
| 60    | 
| 78    | 
| 57    | 
+-------+

Tạo bảng 2 và dữ liệu

mysql> create table DemoTable2 ( Value int ); 
mysql> insert into DemoTable2 values(90), (67);
+-------+ 
| Value | 
+-------+ 
| 90    | 
| 67    | 
+-------+

Truy vấn: Min của (Max bảng 1, Max bảng 2)

mysql> select min(tbl.Value) as Value 
    -> from ( 
    -> select max(Value) as Value from DemoTable1 
    -> union 
    -> select max(Value) as Value from DemoTable2 
    -> ) as tbl;

Kết quả

+-------+ 
| Value | 
+-------+ 
| 78    | 
+-------+

Phân tích:

  • Max bảng 1: 78
  • Max bảng 2: 90
  • UNION gộp: {78, 90}
  • MIN của tập hợp: 78

Lưu ý: UNION loại bỏ trùng lặp. Nếu muốn giữ trùng lặp, dùng UNION ALL (không ảnh hưởng kết quả MIN trong trường hợp này).

Cách thay thế (MySQL 8.0+): Dùng CTE (Common Table Expression) để dễ đọc hơn.