บทนำ
สามารถดึงแถวที่เพิ่มเข้ามาล่าสุด (Last Inserted Row) ได้โดยใช้ Subquery ร่วมกับฟังก์ชัน MAX() บนคอลัมน์ Auto Increment แทนการใช้ LIMIT 1 พร้อม ORDER BY id DESC
ตัวอย่างการสร้างตารางและเพิ่มข้อมูล
mysql> CREATE TABLE DemoTable (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Name VARCHAR(100)
-> );
Query OK, 0 rows affected (0.54 sec)
mysql> INSERT INTO DemoTable(Name) VALUES('John Smith');
mysql> INSERT INTO DemoTable(Name) VALUES('David Miller');
mysql> INSERT INTO DemoTable(Name) VALUES('Chris Brown');
แสดงข้อมูลทั้งหมด
mysql> SELECT * FROM DemoTable;
ผลลัพธ์
+----+--------------+
| Id | Name |
+----+--------------+
| 1 | John Smith |
| 2 | David Miller |
| 3 | Chris Brown |
+----+--------------+
3 rows in set (0.00 sec)
คำสั่งดึงแถวสุดท้ายโดยไม่ใช้ LIMIT
mysql> SELECT * FROM DemoTable
-> WHERE Id = (SELECT MAX(Id) FROM DemoTable);
ผลลัพธ์
+----+-------------+
| Id | Name |
+----+-------------+
| 3 | Chris Brown |
+----+-------------+
1 row in set (0.00 sec)
ข้อดีของวิธีนี้
- ทำงานได้แม้ในระบบที่จำกัดการใช้ LIMIT
- ชัดเจนในเชิงตรรกะ: ดึงแถวที่มี ID สูงสุด
- ประสิทธิภาพดีหากมี Index บนคอลัมน์ Id (Primary Key)