MySQL分组排序,mysql分组
一、问题
产品表
有平台id 产品名称
id ptid name
1 100 产品1
2 100 产品2
3 100 产品3
4 100 产品4
5 100 产品5
6 100 产品6
7 101 产品7
8 101 产品8
9 101 产品9
10 101 产品10
11 101 产品11
如何根据某个平台id 只取这个平台的3条数据(顺序可以随机)
id ptid name
1 100 产品1
2 100 产品2
3 100 产品3
7 101 产品7
8 101 产品8
9 101 产品9
二、建表
create table p_a( id int, ptid varchar(20), name varchar(20) ) insert into p_a(id,ptid,name) values(1,'100','产品1'); insert into p_a(id,ptid,name) values(2,'100','产品2'); insert into p_a(id,ptid,name) values(3,'100','产品3'); insert into p_a(id,ptid,name) values(4,'100','产品4'); insert into p_a(id,ptid,name) values(5,'100','产品5'); insert into p_a(id,ptid,name) values(6,'100','产品6'); insert into p_a(id,ptid,name) values(7,'101','产品7'); insert into p_a(id,ptid,name) values(8,'101','产品8'); insert into p_a(id,ptid,name) values(9,'101','产品9'); insert into p_a(id,ptid,name) values(10,'101','产品10'); insert into p_a(id,ptid,name) values(11,'101','产品11');
三、sql
select * from ( select a.*, case when @oldptid=ptid then @lagfield:=@lagfield+1 else @lagfield:=1 end rn, @oldptid:=ptid from p_a a,(select @lagfield:=0,@oldptid:='') r ) a where rn<=3
MySQL根据ptid分组,分别对分组内进行标注序号,然后根据序号取出各分组内的记录
版权声明:本文为博主原创文章,未经博主允许不得转载。
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。