Comment récupérer le dernier enregistrement d'une table en sql ?

[Fermé]
Signaler
-
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
-
Bonjour,



comment récupérer le dernier enregistrement d'une table en sql ?
merci d'avance.

1 réponse

Messages postés
1235
Date d'inscription
jeudi 22 avril 2010
Statut
Membre
Dernière intervention
19 mai 2015
174
Bonjour,
Si la table est bien construite, la valeur du (des) champ(s) en clé primaire la plus élevée correspond au dernier enregistrement...

SELECT * FROM MaTable WHERE Cle_primaire = MAX(Cle_primaire)

Ou sinon, même principe mais avec un champ datetime.
Morgothal,

Merci, je vous suis reconnaissant.
bonne journée.
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
3 103
Salut,

tout faux !

Si la clé primaire est un champ autoincrémenté, on peut peut-être s'en sortir comme ça (si le sgbd ne fait pas la chasse aux trous en cas de suppression de ligne)
Si la clé primaire est autre chose (matricule quelconque, concaténation nom/prénom), rien ne peut dire quel est le dernier enregistrement (à part si on a prévu un champ date/time spécifiquement).

De plus, la question est mal posée : le dernier enregistrement ne veut rien dire. Il peut être le dernier d'une requête (avec un ORDER BY, donc fluctuant), il peut vouloir dire le dernier inséré dans la table...

Savoir aussi qu'un SGBD stocke les données où il trouve de la place selon des algorithmes qui n'ont rien à faire d'un ordre quelconque (c'est pour cela que ORDER BY existe), généralement, c'est stocké à l'endroit accessible le plus rapidement quand on veut écrire (et où il y a suffisamment de place, bien que l'on puisse morceler les enregistrements), via une fonction de hashage de la clé primaire.