欢迎投稿

今日深度:

MySQL分组排序,mysql分组

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分组,分别对分组内进行标注序号,然后根据序号取出各分组内的记录

版权声明:本文为博主原创文章,未经博主允许不得转载。

www.htsjk.Com true http://www.htsjk.com/shujukunews/9566.html NewsArticle 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 10...
评论暂时关闭