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

เลือกและอัปเดตรายการล่าสุดใน MySQL

ใช้ ORDER BY ... DESC LIMIT 1 ร่วมกับ UPDATE เพื่ออัปเดตแถวล่าสุด

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

1. สร้างตารางมี Auto Increment ID

mysql> create table DemoTable 
    -> ( 
    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    -> Name varchar(100) 
    -> ); 
Query OK, 0 rows affected (0.59 sec)

2. แทรกข้อมูล 3 แถว

mysql> insert into DemoTable(Name) values('John'); 
mysql> insert into DemoTable(Name) values('Sam'); 
mysql> insert into DemoTable(Name) values('Carol');

3. อัปเดตแถวล่าสุด (ID สูงสุด)

mysql> update DemoTable 
    -> set Name='Robert' 
    -> order by Id DESC limit 1; 
Query OK, 1 row affected (0.18 sec)

ผลลัพธ์หลังอัปเดต

+----+--------+
| Id | Name   |
+----+--------+
| 1  | John   |
| 2  | Sam    |
| 3  | Robert |
+----+--------+

ข้อควรระวัง

  • ORDER BY ... LIMIT ใน UPDATE ทำงานได้ใน MySQL เท่านั้น (ไม่ใช่ Standard SQL)
  • ควรมี Primary Key หรือ Unique Column สำหรับจัดลำดับที่ชัดเจน
  • ใน Replication/Cluster อาจทำให้ข้อมูลไม่สอดคล้อง -> ใช้ Primary Key โดยตรงปลอดภัยกว่า

วิธีปลอดภัยกว่า

UPDATE DemoTable 
SET Name = 'Robert' 
WHERE Id = (SELECT MAX(Id) FROM DemoTable);