web-dev-qa-db-fra.com

SQL SELECT ligne FROM table WHERE id = max (id)

Comment pourrais-je faire quelque chose comme ça? J'essaie de comprendre cela depuis environ une heure. Très frustrant. Toute aide serait géniale!

116
Victor Kmita

Vous pouvez utiliser une sous-sélection:

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

Notez que si la valeur de max(id) n'est pas unique, plusieurs lignes sont renvoyées. 

Si vous ne voulez qu'une seule de ces lignes, utilisez la réponse de @ MichaelMior,

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

Tu pourrais aussi faire

SELECT row FROM table ORDER BY id DESC LIMIT 1;

Cela triera les lignes par leur ID dans l'ordre décroissant et renverra la première ligne. Cela revient à retourner la ligne avec l'ID maximum. Bien entendu, cela suppose que id est unique parmi toutes les lignes. Sinon, il pourrait y avoir plusieurs lignes avec la valeur maximale de id et vous n'en obtiendrez qu'une.

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

Vous ne pouvez pas donner order by car order by effectue une "analyse complète" sur une table.

La requête suivante est meilleure:

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

Essayez avec ça 

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