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

วิธีหาค่าสูงสุดจาก 4 ตารางใน MySQL ด้วย GREATEST

ใช้ GREATEST() รวม MAX() จาก Subquery ของหลายตาราง

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

สร้างตาราง 4 ตารางและข้อมูล

CREATE TABLE DemoTable1 (Value INT);
CREATE TABLE DemoTable2 (Value INT);
CREATE TABLE DemoTable3 (Value INT);
CREATE TABLE DemoTable4 (Value INT);

INSERT INTO DemoTable1 VALUES (10), (60);
INSERT INTO DemoTable2 VALUES (90), (12);
INSERT INTO DemoTable3 VALUES (34), (120);
INSERT INTO DemoTable4 VALUES (140), (290);

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

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

ผลลัพธ์

+--------------+
| MaximumValue |
+--------------+
| 290          |
+--------------+

คำอธิบาย:

  • แต่ละ Subquery คืนค่า MAX เดียว: 60, 90, 120, 290
  • GREATEST(60, 90, 120, 290) = 290
  • หาก Subquery ใดคืน NULL ทั้งหมด GREATEST จะคืน NULL (ใช้ COALESCE(subquery, 0) กันได้)

ทางเลือกที่ยืดหยุ่นกว่า: UNION ALL + MAX

SELECT MAX(Value) FROM (
    SELECT Value FROM DemoTable1
    UNION ALL SELECT Value FROM DemoTable2
    UNION ALL SELECT Value FROM DemoTable3
    UNION ALL SELECT Value FROM DemoTable4
) AS all_values;

ข้อดี: เพิ่ม/ลดตารางง่าย, จัดการ NULL ได้ดีกว่า, ใช้ Index ได้หากมี

ฟังก์ชันคู่: LEAST() หาค่าน้อยที่สุดจากหลายค่า