Maison >base de données >tutoriel mysql >Comment obtenir la position de ligne d'une entrée spécifique dans une requête MySQL « ORDER BY » ?

Comment obtenir la position de ligne d'une entrée spécifique dans une requête MySQL « ORDER BY » ?

DDD
DDDoriginal
2025-01-18 02:21:08690parcourir

How to Get the Row Position of a Specific Entry in a MySQL `ORDER BY` Query?

Sélectionnez la position de la ligne dans la requête MySQL ORDER BY

Supposons qu'il existe une table MySQL avec deux colonnes id et name, et que l'objectif est de récupérer une seule ligne et sa position dans la table triée par la colonne name par ordre croissant. Le format de résultat souhaité est un tableau avec les colonnes id, position et name.

Pour ce faire, vous pouvez utiliser une sous-requête combinée à des variables utilisateur :

<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>

Dans cette requête, la sous-requête calcule la position de chaque ligne en fonction de l'ordre des name valeurs. La variable définie par l'utilisateur @rownum est utilisée pour attribuer des positions uniques. La requête principale filtre ensuite les résultats pour obtenir la name valeur "Beta" souhaitée.

Alternativement, la requête suivante fournit des classements qui résolvent les cas portant le même nom :

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

Cette requête calcule la position en comptant le nombre de lignes avec une valeur name inférieure ou égale à la valeur name de la ligne actuelle. Les deux méthodes permettent de déterminer la position des lignes dans un jeu de résultats triés.

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