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

Fermé
Sam - 1 févr. 2013 à 09:44
blux Messages postés 26001 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 24 avril 2024 - 1 févr. 2013 à 15:47
Bonjour,



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

1 réponse

Morgothal Messages postés 1236 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 183
1 févr. 2013 à 10:30
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.
0
Morgothal,

Merci, je vous suis reconnaissant.
bonne journée.
0
blux Messages postés 26001 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 24 avril 2024 3 289
Modifié par blux le 1/02/2013 à 16:55
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.
0