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

MySQL: อัปเดตแถวสุดท้ายของ ID เฉพาะ (ORDER BY DESC LIMIT 1)

การอัปเดตแถวล่าสุดของ 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 เพื่ออัปเดตแถวล่าสุดของกลุ่มหรือทั้งตาราง