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

MySQL: เรียงลำดับตามค่าสูงสุดจาก 2 คอลัมน์ (GREATEST)

การใช้ 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() สำหรับค่าต่ำสุด