การใช้ฟังก์ชัน MAX() เพื่อหาค่าสูงสุด
ฟังก์ชัน MAX() เป็น Aggregate Function ที่ใช้หาค่าสูงสุดของคอลัมน์ที่ระบุ ทำงานได้กับตัวเลข สตริง และวันที่
รูปแบบคำสั่ง
SELECT MAX(column_name) FROM table_name;
ตัวอย่าง: หาค่า Id สูงสุด
1. สร้างตารางและเพิ่มข้อมูล
CREATE TABLE DemoTable (
Id INT
);
INSERT INTO DemoTable VALUES (100);
INSERT INTO DemoTable VALUES (988);
INSERT INTO DemoTable VALUES (1000);
INSERT INTO DemoTable VALUES (99);
INSERT INTO DemoTable VALUES (999);
2. ดูข้อมูลทั้งหมด
SELECT * FROM DemoTable;
ผลลัพธ์:
+------+
| Id |
+------+
| 100 |
| 988 |
| 1000 |
| 99 |
| 999 |
+------+
3. หาค่าสูงสุด
SELECT MAX(Id) AS MaxId FROM DemoTable;
ผลลัพธ์:
+-------+
| MaxId |
+-------+
| 1000 |
+-------+
คุณสมบัติของ MAX()
- ข้ามค่า
NULLอัตโนมัติ (ไม่รวม NULL ในการเปรียบเทียบ) - ทำงานกับทุกชนิดข้อมูลที่เปรียบเทียบได้ (Numeric, String, Date/Time)
- คืนค่า
NULLหากตารางว่างเปล่าหรือคอลัมน์เป็น NULL ทั้งหมด
การใช้งานขั้นสูง
หาค่าสูงสุดพร้อมข้อมูลแถวอื่นๆ
-- วิธี 1: Subquery
SELECT * FROM DemoTable WHERE Id = (SELECT MAX(Id) FROM DemoTable);
-- วิธี 2: ORDER BY + LIMIT (เร็วกว่าหากมี Index)
SELECT * FROM DemoTable ORDER BY Id DESC LIMIT 1;
หาค่าสูงสุดต่อกลุ่ม (GROUP BY)
SELECT Category, MAX(Price) AS MaxPrice
FROM Products
GROUP BY Category;
ประสิทธิภาพ (Performance)
- หากคอลัมน์มี
INDEXการใช้MAX()จะเร็วมาก (O(1) หรือ O(log n)) - ไม่มี Index จะต้อง Full Table Scan (O(n))
- เทียบเท่ากับ
ORDER BY column DESC LIMIT 1แต่ MAX() อ่านง่ายกว่าและ Optimizer จัดการได้ดีกว่า
ฟังก์ชันคู่คือ MIN()
ใช้หาค่าต่ำสุดในลักษณะเดียวกัน:
SELECT MIN(Id) AS MinId FROM DemoTable;