Tôi tin rằng câu trả lời cho điều này được giải quyết trong MySQL tài liệu :
Nếu bảng chứa AUTO_INCREMENT cột và INSERT ... UPDATE chèn một hàng, LAST_INSERT_ID() hàm trả về AUTO_INCREMENT giá trị. Nếu câu lệnh cập nhật một hàng thay thế, LAST_INSERT_ID() không có ý nghĩa. Tuy nhiên, bạn có thể giải quyết vấn đề này bằng cách sử dụng LAST_INSERT_ID(expr) . Giả sử id đó là AUTO_INCREMENT cột. Để tạo LAST_INSERT_ID() có ý nghĩa đối với các bản cập nhật, hãy chèn các hàng như sau:
INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id), c=3;