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

Comment sélectionner de manière fiable les N dernières lignes par ordre croissant à partir d'une table MySQL ?

Barbara Streisand
Libérer: 2024-12-04 02:29:12
original
491 Les gens l'ont consulté

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

Sélection des N dernières lignes de MySQL

La sélection des N dernières lignes d'une base de données MySQL peut être une tâche simple en utilisant diverses méthodes. Cependant, lorsqu'il s'agit de colonnes de clé primaire triées par ordre croissant, les approches conventionnelles peuvent rencontrer des limites. Cet article vise à fournir une solution fiable à ce problème, permettant la manipulation et l'élimination des enregistrements au sein de la table.

Le problème :

L'objectif initial est de récupérer les 50 dernières lignes d'une table triées par ordre croissant en fonction de l'identifiant de colonne de clé primaire. Cependant, la tentative initiale a mis en évidence deux faiblesses :

  1. Le tri des lignes par ordre décroissant à l'aide de ORDER BY id DESC ne parvient pas à conserver l'ordre ASC souhaité lors de l'utilisation de LIMIT 50.
  2. Les requêtes reposant sur en soustrayant une valeur fixe de l'ID maximum (par exemple, id > (SELECT MAX(id) FROM chat) - 50) devient peu fiable lorsque les lignes sont manipulées.

La solution :

Pour surmonter ces défis, une approche plus robuste utilise une sous-requête :

SELECT * FROM
(
 SELECT * FROM table ORDER BY id DESC LIMIT 50
) AS sub
ORDER BY id ASC;
Copier après la connexion

Explication :

  • La sous-requête ((SELECT * FROM table ORDER BY id DESC LIMIT 50)) récupère les 50 dernières lignes de la table tout en préservant l'ordre décroissant.
  • La requête externe (SELECT * FROM ...) encapsule la sous-requête et introduit une nouvelle clause ORDER BY, qui remplace le tri précédent et réorganise les lignes par ordre croissant en fonction de l'identifiant.

Ceci Cette approche répond efficacement aux limites rencontrées avec les méthodes conventionnelles. Il permet :

  • Récupération des N dernières lignes dans l'ordre ASC, quelles que soient les manipulations ou suppressions.
  • Gestion des modifications apportées au tableau, telles que l'ajout ou la suppression de lignes , sans affecter l'exactitude de la requête.

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