J'ai passé pas mal de temps à essayer différentes choses, mais aucune d'elles ne semble fonctionner. Voici ma situation, je voudrais être en mesure de choisir le rang d'une ligne, basé sur l'ID d'une ligne spécifiquement triéEn utilisant MySQL, comment sélectionner le rang de résultat d'une ligne particulière?
Par exemple, si ma requête est quelque chose comme:
SELECT id, name FROM people ORDER BY name ASC
avec des résultats comme:
id name 3 Andrew 1 Bob 5 Joe 4 John 2 Steve
Je voudrais obtenir le rang (quelle ligne il finit dans les résultats) sans retourner toutes les lignes et les jeter en boucle jusqu'à ce que j'arrive à celui que je veux (en PHP). Par exemple, je voudrais sélectionner le 'rank' de 'Steve' pour qu'il renvoie - dans ce cas - 5 (pas son identifiant, mais le 'rank' de son nom dans la requête ci-dessus).
De même, je voudrais être en mesure de sélectionner le rang de n'importe quelle ligne a l'ID de 1. Pour cet exemple, je voudrais retourner un «rang» de 2 (parce que c'est dans quelle rangée de résultats là est un ID de 1) et rien d'autre. J'ai fait autant de choses que je le pouvais avec des résultats variables ... soit avoir des requêtes très lentes pour des tables plus grandes ou avoir à créer toutes sortes de tables temporaires et de variables utilisateur (la première que j'aimerais vraiment évite, ce dernier je suppose que je peux vivre avec).
Une aide ou un aperçu serait grandement apprécié.
Après quelques petits changements, cela semble fonctionner très bien pour ce dont j'ai besoin.Cependant, une complication supplémentaire: serait-il possible de sélectionner un ensemble de lignes en fonction d'un ensemble de conditions (par exemple, uniquement les personnes qui ont un «J» dans leur nom - WHERE comme LIEN «% j%». , et bien que le champ de résultat 'rank' soit toujours pertinent, il saute des nombres pour ceux qui n'ont pas de J dans le nom. – theotherlight