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

อัปเดตตารางที่มี ID ซ้ำกันใน MySQL (อัปเดตแถวสุดท้าย)

ใช้ 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