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

Select แถวสุดท้าย (Last Row) ใน MySQL

ใช้ 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)