J'ai une table USER
, qui a les champs userId
et point
. À l'exécution, je veux savoir ce qu'est un classement d'une base d'utilisateurs particulière sur leur point. Quelle est la meilleure façon d'accomplir ceci:
1: Interrogez tous les utilisateurs dans une liste. Triez la base de liste sur le point et faites une recherche binaire pour trouver le classement de cet utilisateur. Cela ressemble à une mauvaise idée ici.
2: Est-il possible d'accomplir ces tâches en créant des requêtes de base de données?Qu'est-ce qu'un bon design pour le système de classement
Je prévois 2000-5000 utilisateurs.
Je pense que vous devez reformuler ceci. Comment définissez-vous ce que «rang» signifie dans votre système? –
@Peter: Je m'attendrais à ce que le rang soit le numéro de l'entrée de l'utilisateur dans la liste d'utilisateurs par 'point'. – Vlad
@Harry: peut-être quelque chose comme 'select rn from (sélectionnez userId, point, row_number() sur l'ordre par le point desc en tant que USER) où userId =" quelquechose ";'? (Je ne suis pas vraiment bon dans la syntaxe SQL) – Vlad