ใช้ฟังก์ชัน GREATEST() เพื่อหาค่าสูงสุดจากหลายคอลัมน์หรือหลายค่า
ไวยากรณ์
SELECT GREATEST(yourColumnName1, yourColumnName2, yourColumnName3) AS anyAliasName FROM yourTableName;
สร้างตารางตัวอย่าง
mysql> CREATE TABLE MaxOfThreeColumnsDemo (
-> First INT,
-> Second INT,
-> Third INT
-> );
เพิ่มข้อมูลตัวอย่าง
mysql> INSERT INTO MaxOfThreeColumnsDemo VALUES (30, 90, 60), (100, 40, 50), (101, 290, 150);
แสดงข้อมูลทั้งหมด
mysql> SELECT * FROM MaxOfThreeColumnsDemo;
ผลลัพธ์:
+-------+--------+-------+ | First | Second | Third | +-------+--------+-------+ | 30 | 90 | 60 | | 100 | 40 | 50 | | 101 | 290 | 150 | +-------+--------+-------+
หาค่าสูงสุดของ 3 คอลัมน์
mysql> SELECT GREATEST(First, Second, Third) AS MAXValueOfThreeColumns FROM MaxOfThreeColumnsDemo;
ผลลัพธ์:
+------------------------+ | MAXValueOfThreeColumns | +------------------------+ | 90 | | 100 | | 290 | +------------------------+
ฟังก์ชันคู่คือ LEAST()
SELECT LEAST(First, Second, Third) AS MINValue FROM MaxOfThreeColumnsDemo;
ผลลัพธ์: 30, 40, 101
ข้อสังเกต
- คืนค่า NULL หาก พารามิเตอร์ใดพารามิเตอร์หนึ่งเป็น NULL
- ใช้
COALESCE()กัน NULL:GREATEST(COALESCE(a,0), COALESCE(b,0), COALESCE(c,0)) - รองรับทุกชนิดข้อมูลที่เปรียบเทียบได้ (ตัวเลข, วันที่, สตริง)
- สำหรับสตริง เปรียบเทียบตาม collication (ลำดับตัวอักษร)
ตัวอย่างกับวันที่
SELECT GREATEST(date1, date2, date3) AS latest_date FROM events;
ตัวอย่างกับสตริง
SELECT GREATEST('apple', 'banana', 'cherry') AS max_str; -- 'cherry'