Vinzenz Mai: Problem mit SQL-Abfrage MAX()

Beitrag lesen

Hallo,

ich möchte in meiner MySQL Datenbank den Eintrag 'IDENT' im Datensatz mit der größten ID ändern. Bisher hab' ich das hier versucht:

UPDATE erwachsene

SET erwachsene.IDENT = '$ident'
WHERE erwachsene.ID = (SELECT MAX(erwachsene.ID)) LIMIT 1

  

> Manchmal wird der Eintrag IDENT aber in einer Zeile geändert, die nicht die größte ID hat. woran kann das liegen?  
  
das ist bei MySQL normal :-)  
  
1\. [siehe Rouven](https://forum.selfhtml.org/?t=184440&m=1222943)  
  
2\. Setze bitte  
  
   `SELECT MAX(erwachsene.ID)`{:.language-sql}  
  
   ab. Was erhältst Du?  
  
3\. Setze mal  
  
~~~sql
   SELECT  
       ID,  
       IDENT  
   FROM  
       erwachsene  
   WHERE  
       ID = (  
           SELECT  
               MAX(erwachsene.ID)  
   )  

ab. Was erhältst Du?

Ich halte das Ergebnis zwar nicht für besonders sinnvoll oder gar logisch,
   insbesondere wenn man sich das Ergebnis von 2. betrachtet.
   Da Du keine ORDER BY-Klausel verwendest ist Dein Ergebnis mit 3. normal.

4. Da Du ORDER BY verwenden kannst, ist es supereinfach, den Datensatz mit
   der höchsten ID upzudaten:

   UPDATE  
       erwachsene  
   SET IDENT = <wert>  
   ORDER BY  
       ID  
   LIMIT 1  

Freundliche Grüße

Vinzenz