Quasi fatto. Riesci a ottenere l'ordine di inserimento. Quindi:
select myId, @rowid:[email protected]+1 as myrow from maxID, (SELECT @rowid:=0) as init ORDER BY myrow desc LIMIT 1;
Nella mia console ottengo quanto segue:
mysql> select myId, @rowid:[email protected]+1 as myrow from maxID, (SELECT @rowid:=0) as
init ORDER BY myrow desc LIMIT 1;
+------+-------+
| myId | myrow |
+------+-------+
| A003 | 4 |
+------+-------+
1 row in set (0.00 sec)
Demo
AGGIORNAMENTO
Yak ha ragione. La mia soluzione non è deterministica. Forse funziona per una piccola quantità di record. Ho trovato tonnellate di post sull'inaffidabilità dell'ordinamento predefinito di un'istruzione SELECT (qui per esempio ).Passaggi successivi:
- In quali condizioni l'ordinamento SELECT predefinito corrisponde all'ordine di inserzione?
- È possibile ottenere l'ultimo record inserito in una tabella senza un ID incrementale o un timestamp di inserimento?
So che non è una risposta, ma affermare il problema limita il problema.