Saya yakin jawaban untuk ini dibahas di MySQL dokumen :
Jika tabel berisi AUTO_INCREMENT kolom dan INSERT ... UPDATE menyisipkan baris, LAST_INSERT_ID() fungsi mengembalikan AUTO_INCREMENT nilai. Jika pernyataan memperbarui baris sebagai gantinya, LAST_INSERT_ID() tidak berarti. Namun, Anda dapat mengatasinya dengan menggunakan LAST_INSERT_ID(expr) . Misalkan id adalah AUTO_INCREMENT kolom. Untuk membuat LAST_INSERT_ID() berarti untuk pembaruan, masukkan baris sebagai berikut:
INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id), c=3;