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
Libérer: 2025-01-18 02:27:09
original
460 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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!

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