我有很多人的名字。有数百名姓史密斯的人,数百名姓金的人,等等。
如何选择表格中的所有人,但最多只允许6个姓氏相同的人?
答案 0 :(得分: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;
答案 1 :(得分:0)
有很多方法可以做你想要的,其中一些非常复杂。任何确定性方法都将rank the rows。你的任务是将表格加入到自身中,并决定是什么让一个人和#34;史密斯&#34;少于另一个。
对名称进行排名后,您可以再次将其加入表格(或使用where exists
)和where rank < 7
或其他任何内容。