ใช้ ORDER BY id DESC LIMIT 1 (สมมติ id เป็น Auto Increment หรือ Sort Key)
สร้างตารางและข้อมูล
mysql> CREATE TABLE getLastRecord (Id INT, Name VARCHAR(100)); mysql> INSERT INTO getLastRecord VALUES (1,'John'), (2,'Ramit'), (3,'Johnson'), (4,'Carol');
Query ดึง Last Row
mysql> SELECT * FROM getLastRecord ORDER BY Id DESC LIMIT 1;
ผลลัพธ์:
+------+-------+ | Id | Name | +------+-------+ | 4 | Carol | +------+-------+
กรณีไม่มี Auto Increment (ใช้ Timestamp)
SELECT * FROM events ORDER BY created_at DESC LIMIT 1;
กรณีต้องการ Last Row ต่อ Group (MySQL 8.0+)
SELECT * FROM (
SELECT *, ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY created_at DESC) AS rn
FROM events
) t WHERE rn = 1;
Performance Tips
- Index บน Column ที่ ORDER BY (id, created_at)
- หลีกเลี่ยง
SELECT *ระบุ Column ที่ต้องการ - หากตารางใหญ่มาก ควรใช้ Covering Index:
INDEX (id) INCLUDE (name)(MySQL 8.0.13+)
หมายเหตุ: "Last Row" ไม่ได้หมายถึง Physical Order (Heap/Clustered Index) แต่หมายถึง Logical Order ตาม Column ที่ Sort (มักเป็น PK/Created_At)