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

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

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 rangée, utilisez la réponse de @ MichaelMior,

 SELECT row from table ORDER BY id DESC LIMIT 1 

Vous pourriez aussi faire

 SELECT row FROM table ORDER BY id DESC LIMIT 1; 

Cela va sortinger les lignes par leur identifiant dans l’ordre décroissant et retourner la première ligne. Cela revient à renvoyer la ligne avec l’ID maximum. Cela suppose bien sûr que l’ id soit unique parmi toutes les lignes. Sinon, il pourrait y avoir plusieurs lignes avec la valeur maximale pour id et vous n’en aurez qu’une.

 SELECT * FROM table WHERE id = (SELECT MAX(id) FROM TABLE) 

Vous ne pouvez pas donner d’ order by car la order by effectue un “scan complet” sur une table.

La requête suivante est meilleure:

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

Essayez avec ceci

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

On peut toujours opter pour des fonctions analytiques qui vous donneront plus de contrôle

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

Si vous rencontrez un problème avec la fonction rank () en fonction du type de données, vous pouvez choisir row_number () ou dense_rank ().

vous pouvez également utiliser COUNT (id) au lieu de MAX (id)

 SELECT * FROM table WHERE id = (SELECT count(id) FROM table)