sql >> Databasteknik >  >> RDS >> Mysql

Är det begreppsmässigt rätt att göra ett SELECT MAX(id) etc. för att hitta den senast infogade raden?

Detta verkar subjektivt, men jag skulle säga nej, det är inte begreppsmässigt rätt, eftersom:

  • du vill ha den senast infogade raden
  • men din fråga tittar på det maximala id värde

Ja, det finns ett samband mellan max id och senaste infogning, men tänk på följande:

  • Vad händer om den senast infogade raden togs bort?

Svar på MySQL:du får olika resultat. Observera att det inte ens behöver vara multithreading eller flera processer för att detta ska misslyckas. Det beror på att det är två olika saker (vilket visserligen ofta kan ge samma resultat).

select max(id) from <tablename>

kontra

select last_insert_id()

(Gissa vilken som är rätt.)

@Dems påpekade att OP är tvetydig. Jag ska förtydliga min huvudsakliga poäng:

Vi pratar om tre olika delar av information:

  • högsta id värde
  • id av den senast infogade raden, specifik för en session
  • id av raden som senast infogades i tabellen (oavsett session)

Det farliga är att ibland, att fråga efter en ger det rätta svaret för en annan -- men inte alltid .



  1. Hur kontrollerar jag om radioknappen är markerad eller vald i jQuery?

  2. Frågebyggaren infogar inte tidsstämplar

  3. Ställ in MySQL databas tidszon till GMT

  4. Ta bort en databaspostprofil i SQL Server (T-SQL)