2012-07-12 4 views
1

Je pourrais utiliser un peu d'aide avec cette requête.Comment ajouter un rang basé sur des points dans mysql

Voilà ma table:

id  name point 
1  yogi  5 
2  sasi  10 
3  white  5 
4  black  8 

Ma requête est:

SELECT * FROM points ORDER BY point DESC 

Le résultat est:

id  name point 
2  sasi  10 
4  black  8 
1  yogi  5 
3  white  5 

Mais je voudrais des résultats comme ci-dessous. Guidez-moi s'il-vous-plaît.

id  name point rank 
2  sasi  10  1 
4  black  8  2 
1  yogi  5  3 
3  white  5  4 

Est-ce possible?

merci d'avance.

+0

Comment puis-je résoudre ce problème? – yogi46

+1

vous devriez cocher certaines réponses comme correctes. Voir [Comment fonctionne l'acceptation de réponse] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) – Khaleel

Répondre

1

essayer cette

SET @rank = 0; 
SELECT *, @rank:[email protected]+1 AS rank 
    FROM points ORDER BY point DESC 

comme une seule requête de ligne comme suit

SELECT *, @rank:[email protected]+1 AS rank 
    FROM points, (SELECT @rank:=0) temp 
    ORDER BY point DESC 
+0

Merci pour la réponse son ne fonctionne pas correctement pour moi qui n'était pas ma requête originale ma requête ayant 4 tables de jointure. Je ne sais pas comment expliquer cela ici, c'est pourquoi j'ai posté une petite requête. ordre de classement venant comme ça 2,4,1,3. – yogi46

0
SELECT 
    *, 
    @rank:[email protected]+1 'rank' FROM points, (select @rank:=0) r 
ORDER BY 
    point DESC 

Source: Displaying row number (rownum) in MySQL

+0

Merci pour la réponse son ne fonctionne pas correctement pour moi qui n'était pas ma requête originale ma requête ayant 4 tables de jointure. Je ne sais pas comment expliquer cela ici, c'est pourquoi j'ai posté une petite requête. ordre de classement venant comme ça 2,4,1,3. – yogi46

+0

vous devez utiliser une certaine logique et adapter la même logique dans votre requête. – Khaleel

+0

ok merci beaucoup. – yogi46

Questions connexes