ใช้ ORDER BY ... DESC LIMIT 1 ใน UPDATE เพื่ออัปเดตแค่แถวสุดท้ายของ ID ที่ซ้ำ
สร้างตารางตัวอย่าง (ไม่มี PK)
mysql> CREATE TABLE DemoTable (
-> Id INT,
-> Name VARCHAR(100)
-> );
เพิ่มข้อมูลตัวอย่าง (Id=2 ซ้ำ 3 ครั้ง)
mysql> INSERT INTO DemoTable VALUES(1, 'John'); mysql> INSERT INTO DemoTable VALUES(2, 'Chris'); mysql> INSERT INTO DemoTable VALUES(2, 'Robert'); mysql> INSERT INTO DemoTable VALUES(2, 'David');
แสดงข้อมูล
mysql> SELECT * FROM DemoTable;
ผลลัพธ์:
+------+--------+ | Id | Name | +------+--------+ | 1 | John | | 2 | Chris | | 2 | Robert | | 2 | David | +------+--------+
คำสั่งอัปเดตแถวสุดท้ายของ Id=2 (David -> Adam Smith)
mysql> UPDATE DemoTable SET Name = 'Adam Smith' WHERE Id = 2 ORDER BY Id DESC LIMIT 1;
ตรวจสอบผลลัพธ์
mysql> SELECT * FROM DemoTable;
ผลลัพธ์ (David กลายเป็น Adam Smith):
+------+------------+ | Id | Name | +------+------------+ | 1 | John | | 2 | Adam Smith | | 2 | Robert | | 2 | David | +------+------------+
คำอธิบาย: ORDER BY Id DESC เรียง Id=2 มาบนสุด (แถวที่ INSERT สุดท้าย) | LIMIT 1 อัปเดตแค่แถวแรกของชุดที่เรียงแล้ว | ต้องการอัปเดตแถวแรก ใช้ ORDER BY Id ASC LIMIT 1