Sprawdź tę stronę:https://web. archive.org/web/20150329004325/https://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
Na dole strony wyjaśniają, w jaki sposób można nadać LAST_INSERT_ID znaczenie dla aktualizacji, przekazując wyrażenie do tej funkcji MySQL.
Z przykładu dokumentacji MySQL:
Jeśli tabela zawiera kolumnę AUTO_INCREMENT i INSERT ... UPDATE wstawia wiersz, funkcja LAST_INSERT_ID() zwraca wartość AUTO_INCREMENT. Jeśli zamiast tego instrukcja aktualizuje wiersz, LAST_INSERT_ID() nie ma znaczenia. Możesz jednak obejść ten problem, używając LAST_INSERT_ID(expr). Załóżmy, że identyfikator to kolumna AUTO_INCREMENT. Aby LAST_INSERT_ID() miał znaczenie dla aktualizacji, wstaw wiersze w następujący sposób:
INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id), c=3;