最多选择每组

问题描述:

的x行拥有的表:最多选择每组

id | name  | job  | rank 
01 john   teacher 4 
02 mark   teacher 2 
03 phil   plummer 1 
04 dave   teacher 7 
05 jim   plummer 9 
06 bill   plummer 2 

我如何可以选择多达2行,每行工作的(如果可能的话各组排序按职级ASC,使最低的两个每个组的排名被选中)。我期待的结果是:

02 mark teacher 2 
01 john teacher 4 
03 phil plummer 1 
06 bill plummer 2 

这基本上是按工作分组,按限制为2,按排名排序。我一直在尝试与GROUP BY以及LEFT JOIN,但我无法弄清楚如何做到这一点。使用GROUPING BY作业创建作业的“临时列表”时,我如何加入多个作业?

+0

挑的最大正每组那些上千万元的问题之一,你有你的答案 – fancyPants 2013-03-08 13:52:51

+0

的可能重复[MySQL的 - 如何申请LIMIT组] (http://stackoverflow.com/questions/4748204/mysql-how-to-apply-limit-to-group) – fancyPants 2013-03-08 13:53:18

+0

您链接的问题限制了将它们分组后发现的整体。我正在寻找一个查询按组查找,每组有多个命中。不是重复的imo,反正也不是这个问题。 – kontur 2013-03-08 18:27:43

SELECT id, name, job, rank 
FROM TableName a 
WHERE 
     (
      SELECT COUNT(*) 
      FROM  TableName as f 
      WHERE f.job = a.job AND 
        f.rank <= a.rank 
     ) <= 2;