Maison > base de données > tutoriel mysql > Comment récupérer efficacement les N dernières lignes de MySQL par ordre croissant ?

Comment récupérer efficacement les N dernières lignes de MySQL par ordre croissant ?

Patricia Arquette
Libérer: 2024-12-13 16:53:15
original
987 Les gens l'ont consulté

How to Efficiently Retrieve the Last N Rows from MySQL in Ascending Order?

Récupérer les N dernières lignes de MySQL par ordre croissant

Récupérer les N dernières lignes d'une base de données MySQL peut être une tâche courante, en particulier lorsque vous travaillez avec de grandes tables. Cependant, classer les résultats par ordre croissant tout en garantissant l'intégrité des données peut devenir un défi.

Considérez la requête suivante :

SELECT 
    *
FROM
    `table`
ORDER BY id DESC
LIMIT 50;
Copier après la connexion

À première vue, cette requête semble sélectionner les 50 dernières lignes. Cependant, elle le fait par ordre décroissant (du plus grand au moins), ce qui viole l'exigence d'ordre croissant.

Une autre approche est :

SELECT 
    *
FROM
    `table`
WHERE
    id > ((SELECT 
            MAX(id)
        FROM
            chat) - 50)
ORDER BY id ASC;
Copier après la connexion

Cette requête vise à récupérer des lignes avec des identifiants. supérieur à l'ID maximum moins 50. Cependant, il échoue également car les données sont sujettes à des manipulations et des lignes pourraient être supprimées, ce qui pourrait affecter l'ID maximum. résultats.

Solution : approche par sous-requête

Pour relever ces défis, 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;
Copier après la connexion

Cette requête implique une sous-requête qui sélectionne les 50 dernières lignes par ordre décroissant. Les résultats de cette sous-requête sont ensuite stockés dans une table temporaire appelée « sub ». Enfin, la requête externe sélectionne toutes les lignes de "sub" et les classe par ordre croissant.

Cette approche garantit que les 50 dernières lignes sont sélectionnées, même si la table est manipulée, et que les résultats sont présentés par ordre croissant. commande.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal