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

วิธีหาคะแนนต่ำสุดจาก 4 คอลัมน์ในตาราง MySQL ด้วยฟังก์ชัน LEAST()

การหาค่าต่ำสุดจากหลายคอลัมน์ด้วยฟังก์ชัน LEAST()

ฟังก์ชัน LEAST() ใน MySQL ใช้สำหรับหาค่าที่น้อยที่สุดจากรายการค่าหลายค่า ทำงานได้กับตัวเลข สตริง และวันที่

รูปแบบคำสั่ง

LEAST(value1, value2, value3, ...)

ตัวอย่าง: หาคะแนนต่ำสุดจาก 4 คอลัมน์คะแนน

1. สร้างตารางและเพิ่มข้อมูล

CREATE TABLE DemoTable (
    Score1 INT,
    Score2 INT,
    Score3 INT,
    Score4 INT
);

INSERT INTO DemoTable VALUES (88, 76, 45, 56);
INSERT INTO DemoTable VALUES (99, 78, 87, 34);
INSERT INTO DemoTable VALUES (34, 32, 56, 98);

2. ดูข้อมูลทั้งหมด

SELECT * FROM DemoTable;

ผลลัพธ์:

+--------+--------+--------+--------+
| Score1 | Score2 | Score3 | Score4 |
+--------+--------+--------+--------+
| 88     | 76     | 45     | 56     |
| 99     | 78     | 87     | 34     |
| 34     | 32     | 56     | 98     |
+--------+--------+--------+--------+

3. หาคะแนนต่ำสุดของแต่ละแถว

SELECT LEAST(Score1, Score2, Score3, Score4) AS MinimumScore FROM DemoTable;

ผลลัพธ์:

+--------------+
| MinimumScore |
+--------------+
| 45           |
| 34           |
| 32           |
+--------------+

การทำงานของ LEAST()

  • เปรียบเทียบค่าทั้งหมดที่ส่งเข้าไป
  • คืนค่าที่น้อยที่สุด (สำหรับตัวเลข) หรือตัวอักษรที่อยู่หน้าสุด (สำหรับสตริง)
  • หากมีค่า NULL อยู่ในรายการ ผลลัพธ์จะเป็น NULL (ยกเว้นจะใช้ COALESCE จัดการก่อน)

ฟังก์ชันคู่คือ GREATEST()

สำหรับหาค่าสูงสุด ใช้ GREATEST() แทน:

SELECT GREATEST(Score1, Score2, Score3, Score4) AS MaximumScore FROM DemoTable;

กรณีมี NULL และการจัดการ

-- หากมี NULL ใช้ COALESCE ก่อน
SELECT LEAST(COALESCE(Score1, 9999), COALESCE(Score2, 9999), ...) FROM DemoTable;

-- หรือใช้ CASE WHEN
SELECT CASE 
    WHEN Score1 IS NOT NULL AND Score1 <= COALESCE(Score2, Score1) AND Score1 <= COALESCE(Score3, Score1) AND Score1 <= COALESCE(Score4, Score1) THEN Score1
    WHEN Score2 IS NOT NULL AND Score2 <= COALESCE(Score3, Score2) AND Score2 <= COALESCE(Score4, Score2) THEN Score2
    -- ...ต่อไป
END AS MinScore FROM DemoTable;

การใช้งานกับชนิดข้อมูลอื่น

  • สตริง: LEAST('apple', 'banana', 'cherry') → 'apple'
  • วันที่: LEAST('2024-01-01', '2024-12-31', '2024-06-15') → '2024-01-01'
  • ผสมผสาน: MySQL จะพยายามแปลงชนิดให้ตรงกัน (Type Coercion)