如何为mysql中的每个组获取前300行?

如何为mysql中的每个组获取前300行?,mysql,Mysql,我有这样的桌子 dlrecipientid dlrecipientlistid 1 1 2 1 .. .. 999 1 1000 1 1001 2 1002 2 .. .. 1999 2 2000

我有这样的桌子

dlrecipientid  dlrecipientlistid
1                  1
2                  1
..                 ..
999                1
1000               1
1001               2
1002               2
..                 ..
1999               2
2000               2
如何查询和获取前300行dlrecipientlistid

埃普尔

dlrecipientid  dlrecipientlistid
1                  1
2                  1
..                 ..
299                1
300                1
1001               2
1002               2
..                 ..
1299               2
1300               2
我需要mysql中的查询

(
 select *
 from mytable 
 where `group` = 1
  LIMIT 300
 )
UNION ALL
(
select *
from mytable 
where `group` = 2
LIMIT 300

似乎需要使用变量:

select
    dlrecipientlistid,
    dlrecipientid,
    @rowno := case when @grp = dlrecipientlistid then @rowno + 1 else 1 end as rowno,
    @grp := dlrecipientlistid
from yourtable
cross join (select @rowno := 0, @grp := null) t
order by dlrecipientlistid, dlrecipientid
having rowno <= 300
你可以试试这个


从限制300中选择*

您可以通过以下方式进行自连接:

  SELECT tbl1.* FROM your_table AS tbl1
  LEFT OUTER JOIN your_table AS tbl2 
    ON (tbl1.dlrecipientlistid= tbl2.dlrecipientlistid 
        AND tbl1.dlrecipientid > tbl2.dlrecipientid)
  GROUP BY tbl1.dlrecipientid  
  HAVING COUNT(*) < 300
  ORDER BY tbl1.dlrecipientid,tbl1.dlrecipientlistid DESC;

我已经更新了查询,并在

dlrecipientlistid非表中进行了充分测试。表中有100个dlrecipientlistid。我刚刚给出了示例SelectTBL1.*从HMU DistributionListRecipients作为tbl1左连接HMU DistributionListRecipients作为tbl1上的tbl2。DistributionListId=tbl2。distributionlistrecipientlistid按tbl1分组。distributionlistrecipientid具有COUNT*@James123:我已经更新了查询,并且测试良好。请使用更新的查询