ใช้ 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() หาค่าน้อยที่สุดจากหลายค่า