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

ดึงแถวสุดท้ายใน MySQL โดยไม่ใช้ LIMIT

บทนำ

สามารถดึงแถวที่เพิ่มเข้ามาล่าสุด (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)