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

วิธีดึงข้อมูลแถวล่าสุดในตาราง MySQL

มี 2 วิธีหลัก: 1) ORDER BY ... DESC LIMIT 1, 2) ใช้ MAX() กับ Primary Key

วิธีที่ 1: ORDER BY DESC LIMIT 1

SELECT * FROM yourTable ORDER BY yourColumn DESC LIMIT 1;

วิธีที่ 2: ใช้ MAX()

SET @maxId = (SELECT MAX(yourColumn) FROM yourTable);
SELECT * FROM yourTable WHERE yourColumn = @maxId;

ตัวอย่างการใช้งาน

สร้างตาราง lastEntryDemo:

mysql> CREATE TABLE lastEntryDemo (
    -> Id INT NOT NULL AUTO_INCREMENT,
    -> Name VARCHAR(30),
    -> Age INT,
    -> PRIMARY KEY(Id)
    -> );

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

mysql> INSERT INTO lastEntryDemo(Name, Age) VALUES('Larry',24),('John',21),('David',22),('Bob',25),('Carol',29),('Mike',23),('Sam',20);

ข้อมูลทั้งหมด

+----+-------+------+
| Id | Name  | Age  |
+----+-------+------+
| 1  | Larry | 24   |
| 2  | John  | 21   |
| 3  | David | 22   |
| 4  | Bob   | 25   |
| 5  | Carol | 29   |
| 6  | Mike  | 23   |
| 7  | Sam   | 20   |
+----+-------+------+

วิธีที่ 1: เรียง Name DESC LIMIT 1

mysql> SELECT * FROM lastEntryDemo ORDER BY Name DESC LIMIT 1;
+----+------+------+
| Id | Name | Age  |
+----+------+------+
| 7  | Sam  | 20   |
+----+------+------+

วิธีที่ 2: ใช้ MAX(Id)

mysql> SET @MaxId = (SELECT MAX(Id) FROM lastEntryDemo);
mysql> SELECT * FROM lastEntryDemo WHERE Id = @MaxId;
+----+------+------+
| Id | Name | Age  |
+----+------+------+
| 7  | Sam  | 20   |
+----+------+------+

แนะนำ: ใช้ Primary Key (AUTO_INCREMENT) กับ MAX() เร็วกว่าและเชื่อถือได้กว่า ORDER BY คอลัมน์อื่น