如何为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:我已经更新了查询,并且测试良好。请使用更新的查询