Mysql
 sql >> база данни >  >> RDS >> Mysql

Правилно ли е концептуално да се направи SELECT MAX(id) и т.н. за намиране на последния вмъкнат ред?

Това изглежда субективно, но бих казал не, не е концептуално правилно, защото:

  • искате последния вмъкнат ред
  • но вашата заявка разглежда максималния id стойност

Да, има някаква връзка между максималния идентификатор и най-новото вмъкване, но имайте предвид следното:

  • какво ще стане, ако последният вмъкнат ред беше изтрит?

Отговор на MySQL:получавате различни резултати. Имайте предвид, че дори не е необходимо да има многонишковост или множество процеси, за да се провали. Това е така, защото това са две различни неща (които разбира се често могат да доведат до едни и същи резултати).

select max(id) from <tablename>

срещу

select last_insert_id()

(Познайте кое е правилно.)

@Dems посочи, че ОП е двусмислена. Ще изясня основната си идея:

Говорим за три различни части от информация:

  • максимален id стойност
  • id от последния вмъкнат ред, специфичен за сесия
  • id от последния ред, вмъкнат в таблицата (независимо от сесията)

Опасното е, че понякога запитването за едно ще даде правилния отговор за друго - но не винаги .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql има ли еквивалент на @@ROWCOUNT като в mssql?

  2. Pure-SQL техника за автоматично номериране на редове в набор от резултати

  3. Кой е най-добрият начин за криптиране/декриптиране на json низ

  4. Издигането на съхранената процедура е несъвместимо с sql_mode=only_full_group_by, въпреки че sql_mode е празен

  5. SQL - Дайте ми 3 посещения само за всеки тип