Maison >base de données >tutoriel mysql >Comment puis-je trouver efficacement la position de la ligne dans MySQL après la commande ?

Comment puis-je trouver efficacement la position de la ligne dans MySQL après la commande ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-18 02:27:09466parcourir

How Can I Efficiently Find the Row Position in MySQL After Ordering?

Obtenir efficacement les positions des lignes après le tri MySQL

Dans une table MySQL, déterminer la position d'une ligne spécifique après un tri basé sur une colonne spécifique (par exemple 'nom') nécessite une approche optimisée pour éviter de charger un grand ensemble de résultats.

Considérez la requête suivante :

<code class="language-sql">SELECT x.id,
       x.position,
       x.name
  FROM (SELECT t.id,
               t.name,
               @rownum := @rownum + 1 AS position
          FROM TABLE t
          JOIN (SELECT @rownum := 0) r
      ORDER BY t.name) x
 WHERE x.name = 'Beta'</code>

Cette requête utilise une sous-requête pour attribuer des positions de ligne en fonction de la clause ORDER BY, puis filtre la ligne requise « bêta ». La position est calculée à l'aide de la variable utilisateur @rownum, qui est automatiquement incrémentée pour chaque ligne.

Vous pouvez également utiliser la requête suivante pour gérer l'égalité différemment :

<code class="language-sql">SELECT t.id,
       (SELECT COUNT(*)
          FROM TABLE x
         WHERE x.name < t.name) + 1 AS position
  FROM TABLE t
 WHERE t.name = 'Beta'</code>

Cette méthode renvoie la même position pour les lignes parallèles et peut fournir un ensemble de résultats différent de celui de la première 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!

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