ใช้ 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 ได้ดีกว่า