限制一列中具有相同记录的行数?

时间:2016-07-27 21:15:20

标签: mysql sql mariadb

我有很多人的名字。有数百名姓史密斯的人,数百名姓金的人,等等。

如何选择表格中的所有人,但最多只允许6个姓氏相同的人?

2 个答案:

答案 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或其他任何内容。