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

วิธีดึงข้อมูลที่เพิ่มล่าสุดจากตาราง MySQL

การดึงข้อมูลที่เพิ่มล่าสุด (Most Recent Records) ใน MySQL

เมื่อต้องการดึงข้อมูลที่เพิ่มเข้ามาล่าสุดจากตาราง วิธีมาตรฐานคือใช้ ORDER BY ร่วมกับ LIMIT โดยเรียงลำดับจากคอลัมน์ที่บ่งบอกลำดับการเพิ่มข้อมูล (เช่น Auto Increment ID หรือ Timestamp)

หลักการทำงาน

SELECT * FROM table_name 
ORDER BY id_column DESC 
LIMIT n;
  • ORDER BY ... DESC: เรียงจากค่ามากไปน้อย (ล่าสุดอยู่บนสุด)
  • LIMIT n: จำกัดจำนวนแถวที่ต้องการ

ตัวอย่างเต็มรูปแบบ

สร้างตารางนักเรียนพร้อม Auto Increment ID:

CREATE TABLE DemoTable (
    StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    StudentName VARCHAR(20)
);

เพิ่มข้อมูล 6 แถว:

INSERT INTO DemoTable (StudentName) VALUES 
('Chris Brown'), ('David Miller'), ('John Doe'),
('John Smith'), ('Adam Smith'), ('Carol Taylor');

ข้อมูลทั้งหมดในตาราง:

+-----------+--------------+
| StudentId | StudentName  |
+-----------+--------------+
|         1 | Chris Brown  |
|         2 | David Miller |
|         3 | John Doe     |
|         4 | John Smith   |
|         5 | Adam Smith   |
|         6 | Carol Taylor |
+-----------+--------------+

ดึงข้อมูล 3 แถวที่เพิ่มล่าสุด

SELECT * FROM DemoTable 
ORDER BY StudentId DESC 
LIMIT 3;

ผลลัพธ์

+-----------+--------------+
| StudentId | StudentName  |
+-----------+--------------+
|         6 | Carol Taylor |
|         5 | Adam Smith   |
|         4 | John Smith   |
+-----------+--------------+

กรณีใช้ Timestamp แทน Auto Increment

หากตารางมีคอลัมน์ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP:

SELECT * FROM table_name 
ORDER BY created_at DESC 
LIMIT 10;

ข้อควรพิจารณา

  • Auto Increment ID: ใช้ได้ก็ต่อเมื่อไม่มีการลบข้อมูลหรือ RESET ID
  • Timestamp: น่าเชื่อถือกว่า แต่ต้องมี Index เพื่อประสิทธิภาพ
  • ประสิทธิภาพ: ควรมี Index บนคอลัมน์ที่ใช้ ORDER BY
  • Pagination: สำหรับหน้าต่อๆ ไป ใช้ OFFSET ร่วมกับ LIMIT

ตัวอย่าง Pagination (หน้าที่ 2, 5 รายการต่อหน้า)

SELECT * FROM DemoTable 
ORDER BY StudentId DESC 
LIMIT 5 OFFSET 5;