sql >> Database >  >> RDS >> Mysql

Hoe de top 3 topper van elk onderwerp in de gegeven tabel te vinden?

U kunt dit doen met behulp van variabelen.

select t.*
from (select t.*,
             (@rn := if(@s = subject, @rn + 1,
                        if(@s := subject, 1, 1)
                       )
             ) as rn
      from t cross join
           (select @rn := 0, @s := '') params
      order by subject, marks desc
     ) t 
where rn <= 3
order by t.subject, t.rn;


  1. Is het goed om htmlspecialchars() te gebruiken voor het invoegen in MySQL?

  2. T-SQL:alle dubbele rijen verwijderen, maar er één behouden

  3. Snelle en beste truc voor SQL Server MDF-bestandsherstel

  4. Waarom kan ik een tabel maken met PRIMARY KEY op een nullable kolom?