Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Czy koncepcyjnie słuszne jest wykonanie SELECT MAX(id) itp. w celu znalezienia ostatniego wstawionego wiersza?

Wydaje się to subiektywne, ale powiedziałbym, że nie, koncepcyjnie nie jest to właściwe, ponieważ:

  • chcesz ostatnio wstawiony wiersz
  • ale Twoje zapytanie ma maksymalny id wartość

Tak, istnieje pewien związek między maksymalnym identyfikatorem a najnowszym wstawieniem, ale weź pod uwagę następujące kwestie:

  • co by było, gdyby ostatnio wstawiony wiersz został usunięty?

Odpowiedź na MySQL:otrzymujesz różne wyniki. Zauważ, że nie musi być nawet wielowątkowości ani wielu procesów, aby to się nie powiodło. To dlatego, że są to dwie różne rzeczy (które wprawdzie często dają takie same wyniki).

select max(id) from <tablename>

w porównaniu z

select last_insert_id()

(Zgadnij, który jest właściwy.)

@Dems zwrócił uwagę, że PO jest niejednoznaczny. Wyjaśnię mój główny punkt:

Mówimy o trzech różnych informacjach:

  • maksymalny id wartość
  • id ostatnio wstawionego wiersza, specyficznego dla sesji
  • id wierszy ostatnio wstawionych do tabeli (niezależnie od sesji)

Niebezpieczne jest to, że czasami zapytanie o jedno daje właściwą odpowiedź dla drugiego — ale nie zawsze .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przestój aktualizacji instancji AWS RDS

  2. Najlepsze wyniki „n” dla każdego słowa kluczowego

  3. SQL — Znajdź całe słowo w tekście

  4. Narzędzia wykresów Google z PHP i MySQL

  5. Ile tabel można utworzyć w bazie mysql?