Ich habe die folgende Abfrage:MySQL ON DUPLICATE KEY - letzte Einfüge-ID?
INSERT INTO table (a) VALUES (0)
ON DUPLICATE KEY UPDATE a=1
Ich möchte die ID entweder der Einsatz oder das Update. Normalerweise führe ich eine zweite Abfrage aus, um dies zu erhalten, da insert_id() nur die 'eingefügte' ID und nicht die aktualisierte ID zurückgibt.
Gibt es eine Möglichkeit INSERT/UPDATE und abrufen Sie die ID der Zeile, ohne zwei Abfragen auszuführen?
Statt anzunehmen, warum testen Sie es nicht selbst? Das SQL in der obigen Bearbeitung funktioniert, und durch meine Tests ist schneller als das Abfangen eines Einfügungsfehlers, mithilfe von INSERT IGNORE, oder Auswählen, um zu sehen, ob es zuerst ein Duplikat gibt. –
WARNUNG: Die vorgeschlagene Lösung funktioniert, aber der auto_increment-Wert wird weiter erhöht, auch wenn keine Einfügung erfolgt. Wenn der Duplikatschlüssel häufig vorkommt, sollten Sie nach der obigen Abfrage "alter table tabellenname AUTO_INCREMENT = 0;" ausführen, um große Lücken in Ihren ID-Werten zu vermeiden. –