Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

วิธีหาค่าสูงสุด (MAX) จากคอลัมน์ในสองตาราง MySQL

ใช้ GREATEST() เปรียบเทียบ MAX() จากสองตาราง

ฟังก์ชัน GREATEST() คืนค่ามากที่สุดจากรายการพารามิเตอร์ ใช้ร่วมกับ Subquery MAX() จากแต่ละตาราง

ตัวอย่างสร้างตาราง 2 ตาราง

CREATE TABLE DemoTable1 (Number INT);
CREATE TABLE DemoTable2 (Number INT);

INSERT INTO DemoTable1 VALUES (80), (229), (575);
INSERT INTO DemoTable2 VALUES (485), (10), (475);

ข้อมูลตาราง 1

+--------+
| Number |
+--------+
| 80     |
| 229    |
| 575    |
+--------+

ข้อมูลตาราง 2

+--------+
| Number |
+--------+
| 485    |
| 10     |
| 475    |
+--------+

คำสั่งหาค่าสูงสุดจากทั้งสองตาราง

SELECT GREATEST(
    (SELECT MAX(Number) FROM DemoTable1),
    (SELECT MAX(Number) FROM DemoTable2)
) AS MaximumValue;

ผลลัพธ์

+--------------+
| MaximumValue |
+--------------+
| 575          |
+--------------+

คำอธิบาย:

  • Subquery แต่ละอันคืนค่า MAX เดียว (Scalar Subquery)
  • GREATEST(val1, val2) เปรียบเทียบค่าทั้งสอง คืนค่าที่มากกว่า
  • หากมี NULL ในพารามิเตอร์ GREATEST จะคืน NULL (ใช้ COALESCE กันได้)

ขยายเป็น 3+ ตาราง:

SELECT GREATEST(
    (SELECT MAX(Number) FROM DemoTable1),
    (SELECT MAX(Number) FROM DemoTable2),
    (SELECT MAX(Number) FROM DemoTable3),
    (SELECT MAX(Number) FROM DemoTable4)
) AS MaximumValue;

ทางเลือก: UNION ALL + MAX

SELECT MAX(Number) FROM (
    SELECT Number FROM DemoTable1
    UNION ALL
    SELECT Number FROM DemoTable2
) AS combined;

วิธีนี้ยืดหยุ่นกว่า สามารถเพิ่มตารางได้ง่าย และจัดการ NULL ได้ดีกว่า