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

È concettualmente corretto eseguire un SELECT MAX(id) ecc. Per trovare l'ultima riga inserita?

Questo sembra soggettivo, ma direi di no, non è concettualmente corretto, perché:

  • vuoi la riga inserita più di recente
  • ma la tua query esamina l'id massimo valore

Sì, esiste una relazione tra max id e inserimento più recente, ma considera quanto segue:

  • Cosa succede se la riga inserita più di recente è stata eliminata?

Risposta su MySQL:ottieni risultati diversi. Nota che non è nemmeno necessario che ci siano multithreading o più processi perché questo abbia esito negativo. Questo perché sono due cose diverse (che certamente possono spesso produrre gli stessi risultati).

select max(id) from <tablename>

contro

select last_insert_id()

(Indovina quale ha ragione.)

@Dems ha sottolineato che l'OP è ambiguo. Chiarirò il mio punto principale:

Stiamo parlando di tre diverse informazioni:

  • massimo id valore
  • id della riga inserita più di recente, specifica per una sessione
  • id della riga inserita più di recente nella tabella (indipendentemente dalla sessione)

La cosa pericolosa è che a volte, interrogare uno darà la risposta giusta per un altro -- ma ​​non sempre .