2016-07-27 48 views

回答

0

最簡單的方法可能是使用變量:

select ll.* 
from (select ll.*, 
      (@rn := if(@ln = lastname, @rn + 1, 
         if(@ln := lastname, 1, 1) 
         ) 
      ) as rn 
     from longlist ll cross join 
      (select @ln := '', @rn := 0) params 
     order by lastname 
    ) ll 
where rn <= 6; 
+0

其中'姓氏'是列名? – jairbow

+0

@jairbow。 。 。是。 –

+0

我真的希望有一個內置的方式來做到這一點,但這種方法正是我所要求的。 – jairbow

0

有很多方法可以做到你想要什麼,他們中的一些非常複雜的。任何確定性方法將爲rank the rows。你的任務是加入表格本身,並決定什麼使一個「史密斯」比另一個少。

一旦你有排名的名字,你可以再次加入他們的表(或使用where exists)和where rank < 7或其他什麼。

相關問題