sql >> Databáze >  >> RDS >> Mysql

Je koncepčně správné udělat SELECT MAX(id) atd. pro nalezení posledního vloženého řádku?

Zdá se to subjektivní, ale řekl bych, že ne, není to koncepčně správné, protože:

  • chcete naposledy vložený řádek
  • ale váš dotaz se dívá na maximální id hodnotu

Ano, mezi max id a nejnovější vložkou existuje určitý vztah, ale zvažte následující:

  • co když byl smazán naposledy vložený řádek?

Odpověď na MySQL:získáte různé výsledky. Všimněte si, že ani nemusí být vícevláknové nebo více procesů, aby to selhalo. Je to proto, že jsou to dvě různé věci (které nepochybně často mohou vést ke stejným výsledkům).

select max(id) from <tablename>

vs

select last_insert_id()

(Hádejte, který z nich je správný.)

@Dems poukázal na to, že OP je nejednoznačný. Vysvětlím svůj hlavní bod:

Hovoříme o třech různých informacích:

  • maximální id hodnotu
  • id z naposledy vloženého řádku, specifického pro relaci
  • id řádku naposledy vloženého do tabulky (bez ohledu na relaci)

Nebezpečné je, že někdy dotaz na jednoho poskytne správnou odpověď na druhého – ale ne vždy .



  1. Řazení sloupce VARCHAR jako FLOAT pomocí operátoru CAST v MySQL nefunguje

  2. Jak funguje WEIGHT_STRING() v MariaDB

  3. Proč SQL Server automaticky ignoruje prázdné místo na konci?

  4. Jak najít všechny vztahy mezi všemi tabulkami mysql?