Mysql
 sql >> Database >  >> RDS >> Mysql

Ottenere l'ultimo record da MySQL

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.