Innanzitutto grazie per il suggerimento...
Purtroppo però non sono riuscito a capirci molto... :-(
Mi daresti una mano ad adattare la tua query alla mia tabella. Io ci ho provato ma non ne vengo a capo...
Queste sono le mie colonne:

nominativo| numero|punteggio|data|

In teoria dovrebbe diventare così la query che mi hai segnalato:
codice:
SELECT *
FROM (

SELECT * , @num := if( @nominativo = nominativo, @num +1, 1 ) AS riga_numero
FROM punteggi
ORDER BY nominativo ASC , punteggio DESC
) AS tab
WHERE riga_numero <=3
ma a me non funziona...
Dove sbaglio?
Grazie mille di nuovo per l'aiuto e per la pazienza!