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!