it-swarm.com.de

SQL SELECT-Zeile FROM-Tabelle WHERE id = max (id)

Wie würde ich so etwas tun? Ich habe seit ungefähr einer Stunde versucht, das herauszufinden. Sehr frustrierend. Jede Hilfe wäre super!

116
Victor Kmita

Sie können eine Unterauswahl verwenden:

SELECT row 
FROM table 
WHERE id=(
    SELECT max(id) FROM table
    )

Wenn der Wert von max(id) nicht eindeutig ist, werden mehrere Zeilen zurückgegeben. 

Wenn Sie nur eine solche Zeile haben möchten, verwenden Sie die Antwort von @ MichaelMior.

SELECT row from table ORDER BY id DESC LIMIT 1
199
unutbu

Du könntest es auch tun

SELECT row FROM table ORDER BY id DESC LIMIT 1;

Dadurch werden die Zeilen in absteigender Reihenfolge nach ihrer ID sortiert und die erste Zeile zurückgegeben. Dies ist gleichbedeutend mit der Rückgabe der Zeile mit der maximalen ID. Dies setzt natürlich voraus, dass id in allen Zeilen eindeutig ist. Andernfalls könnten mehrere Zeilen mit dem Maximalwert für id vorhanden sein, und Sie erhalten nur eine.

128
Michael Mior
SELECT * 
FROM table 
WHERE id = (SELECT MAX(id) FROM TABLE)
23

Sie können order by nicht angeben, da order by eine vollständige Überprüfung für eine Tabelle durchführt.

Die folgende Abfrage ist besser:

SELECT * FROM table WHERE id = (SELECT MAX(id) FROM table);
17
CakeLikeBoss

Man kann immer auch auf analytische Funktionen zurückgreifen, die Ihnen mehr Kontrolle geben

select tmp.row from ( select row, rank() over(partition by id order by id desc ) as rnk from table) tmp where tmp.rnk=1

Wenn es je nach Datentyp Probleme mit der Funktion rank () gibt, können Sie auch zwischen row_number () und dense_rank () wählen.

0
sumit kumar

Versuchen Sie es damit 

 SELECT top 1  id, Col2,  row_number() over (order by id desc)  FROM Table
0
Wella