2016-07-20 67 views
0

表學生MySQL查詢由到找到另一列從列和組的最大3個值

Name Class Marks 
abc a 95 
zxc a 90 
ert a 85 
hjk a 80 
iur b 98 
iue b 96 
opi b 94 
ool b 90 

輸出

Name Class Marks 
abc a 95 
zxc a 90 
ert a 85 
iur b 98 
iue b 96 
opi b 94 

下面我們就來組對列類,並獲得最多三個列標記的值。有可能是用於柱類如c,d,E,F,G等的不同值

+0

仿真'ROW_NUMBER()在()',如圖教程http://www.mysqltutorial.org/mysql-row_number/ – Serg

+0

無法在此上下文中應用row_number()的概念。 –

+0

概念:'select * from(select *,row_number()over(由Marks desc劃分的分類)作爲學生的rn)其中rn <= 3' – Serg

回答

0

一個簡單的方法是使用變量:

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

謝謝戈登,它的工作很好。 –

相關問題