การใช้ GREATEST() หาค่าสูงสุดต่อแถว
ฟังก์ชัน GREATEST(val1, val2, ...) คืนค่าสูงสุดจากรายการ ใช้ใน ORDER BY เพื่อเรียงตามค่ามากที่สุดของหลายคอลัมน์
ตัวอย่าง
mysql> create table DemoTable834(Value1 int, Value2 int);
Query OK, 0 rows affected (1.50 sec)
mysql> insert into DemoTable834 values(10, 20);
mysql> insert into DemoTable834 values(40, 50);
mysql> insert into DemoTable834 values(20, 24);
mysql> insert into DemoTable834 values(30, 10);
เรียงตามค่าสูงสุดของ Value1 และ Value2 (มากไปน้อย)
mysql> select * from DemoTable834 order by GREATEST(Value1, Value2) DESC;
ผลลัพธ์:
+--------+--------+
| Value1 | Value2 |
+--------+--------+
| 40 | 50 | -- GREATEST = 50
| 30 | 10 | -- GREATEST = 30
| 20 | 24 | -- GREATEST = 24
| 10 | 20 | -- GREATEST = 20
+--------+--------+
ฟังก์ชันคู่: LEAST()
-- เรียงตามค่าต่ำสุดของ 2 คอลัมน์
SELECT * FROM DemoTable834 ORDER BY LEAST(Value1, Value2) DESC;
การใช้งานอื่นๆ
-- หาค่าสูงสุด 3 คอลัมน์
SELECT GREATEST(col1, col2, col3) FROM table;
-- ใน WHERE
SELECT * FROM table WHERE GREATEST(price1, price2) > 100;
สรุป
ใช้ ORDER BY GREATEST(col1, col2) DESC เรียงตามค่าสูงสุดของหลายคอลัมน์ ใช้ LEAST() สำหรับค่าต่ำสุด