Maison >base de données >tutoriel mysql >Comment récupérer de manière fiable les N dernières lignes par ordre croissant d'une table MySQL ?

Comment récupérer de manière fiable les N dernières lignes par ordre croissant d'une table MySQL ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-04 09:20:13965parcourir

How to Reliably Retrieve the Last N Rows in Ascending Order from a MySQL Table?

Récupérer les N dernières lignes par ordre croissant d'une table MySQL manipulable

Lors de la récupération des N dernières lignes d'une base de données MySQL potentiellement manipulable, en garantissant à la fois chronologique ( décroissant) et l’ordre croissant peuvent être difficiles. Cet article résout ce problème en proposant une solution à l'aide d'une sous-requête.

La requête suivante vise à sélectionner les 50 dernières lignes d'une table classées par identifiant de clé primaire par ordre décroissant :

SELECT *
FROM `table`
ORDER BY id DESC
LIMIT 50;

Cependant, cette approche présente un défaut : si des lignes sont supprimées, les lignes suivantes ne seront pas récupérées avec précision dans l'ordre croissant. order.

De même, la requête ci-dessous ne parvient pas à résoudre le problème de manipulation :

SELECT *
FROM `table`
WHERE id > ((SELECT MAX(id) FROM chat) - 50)
ORDER BY id ASC;

Solution utilisant une sous-requête :

Pour surmonter ces limitations , une sous-requête peut être utilisée :

SELECT * FROM
(
 SELECT * FROM table ORDER BY id DESC LIMIT 50
) AS sub
ORDER BY id ASC;

Cette requête sélectionne les 50 dernières lignes de la table dans ordre décroissant à l'aide d'une sous-requête, puis les réordonne par ordre croissant avant de récupérer le résultat final.

Cette approche permet une récupération précise des N dernières lignes, quelles que soient les modifications ou suppressions apportées à la table, en veillant à ce que les données soient affichées dans l'ordre chronologique souhaité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn