Se ho capito bene vuoi il rank, cioè il numero nella classifica ordinato per Record
Primo, secondo, terzo... n-esimo
Da questo esempio...
Name | Record
Luca | 256
Giulio | 3
Alessio| 12
io interpreto (certo un po' vaghino, comunque...) che vuoi questo...
Name | Record |rank
Luca | 256 |1
Alessio| 12 |2
Giulio | 3 |3
Una tecnica carina è questa
SELECT Name,Record,@precedente:=@corrente,@corrente:=Record,@rank:=IF(@precedente=@corrente, @rank, @rank+1) AS rank
FROM recordtable,
(SELECT @corrente:=null,@precedente:=null,@rank:=0) as inutile
ORDER BY Record desc
e metti pure l'explain
prima dell'order by puoi mettere un WHERE qualcosa, ovviamente è una selezione sul record, non sul risultato
Se vuoi il rank di un record ben preciso puoi fare così, con una subquery derivata e piazzando il WHERE fuori
SELECT Name,Record,rank FROM
(
SELECT Name,Record,@precedente:=@corrente,@corrente:=Record,@rank:=IF(@precedente=@corrente, @rank, @rank+1) AS rank
FROM recordtable,
(SELECT @corrente:=null,@precedente:=null,@rank:=0) as inutile
ORDER BY Record desc
) as inutile2
WHERE Name="pippo"
in questo caso se metti "Alessio" salta fuori che è il numero 2 nell'elenco
a me sembra abbastanza chiaro, vedi te se lo è