Вы не можете сделать это в запросе INSERT, потому что INSERT не возвращает никаких строк.
В случае сбоя INSERT из-за дублированного ключа - обычно тот, кто создал запрос, знает, какие данные он отправил, поэтому он может использовать это.
Возможно, вы сможете добиться того, чего хотитеиспользуя 12.2.5.3.INSERT ... ON DUPLICATE KEY UPDATE
Если таблица содержит столбец AUTO_INCREMENT и INSERT ... UPDATE вставляет строку, функция LAST_INSERT_ID () возвращает значение AUTO_INCREMENT.Если инструкция обновляет строку, LAST_INSERT_ID () не имеет смысла.Однако вы можете обойти это, используя LAST_INSERT_ID (expr).Предположим, что id является столбцом AUTO_INCREMENT.Чтобы LAST_INSERT_ID () имел смысл для обновлений, вставьте строки следующим образом:
INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id), c=3;