การอัปเดตแถวล่าสุดของ ID เฉพาะ
ใช้ ORDER BY id DESC LIMIT 1 ในคำสั่ง UPDATE เพื่อจัดการแค่แถวสุดท้ายของกลุ่ม
ตัวอย่าง
mysql> create table DemoTable824(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
ClientName varchar(100),
ClientAge int );
Query OK, 0 rows affected (0.56 sec)
mysql> insert into DemoTable824(ClientName,ClientAge) values('Chris',23);
mysql> insert into DemoTable824(ClientName,ClientAge) values('Robert',26);
mysql> insert into DemoTable824(ClientName,ClientAge) values('Bob',24);
mysql> insert into DemoTable824(ClientName,ClientAge) values('David',27);
อัปเดตแถวสุดท้าย (Id = 4)
mysql> update DemoTable824
set ClientName = 'Adam', ClientAge = 28
order by Id DESC limit 1;
Query OK, 1 row affected (0.20 sec)
ผลลัพธ์
+----+------------+-----------+
| Id | ClientName | ClientAge |
+----+------------+-----------+
| 1 | Chris | 23 |
| 2 | Robert | 26 |
| 3 | Bob | 24 |
| 4 | Adam | 28 | <-- เปลี่ยนจาก David, 27
+----+------------+-----------+
การประยุกต์: อัปเดตแถวล่าสุดของ Client คนหนึ่ง
UPDATE DemoTable824
SET ClientAge = 30
WHERE ClientName = 'Robert'
ORDER BY Id DESC LIMIT 1;
ข้อควรระวัง
ORDER BY ... LIMITใน UPDATE เป็น MySQL Extension (ไม่ใช่ Standard SQL)- ต้องมี Index/Condition ที่ทำให้ ORDER BY ทำงานได้ชัดเจน
- ใช้ Transaction หากสำคัญ
สรุป
ใช้ UPDATE ... ORDER BY pk DESC LIMIT 1 เพื่ออัปเดตแถวล่าสุดของกลุ่มหรือทั้งตาราง