• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

MySQL分组排序_MySQL

mysql 搞代码 4年前 (2022-01-09) 54次浏览 已收录 0个评论

一、问题

产品表
有平台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 v<b style="color:transparent">本文来源gao@!dai!ma.com搞$$代^@码!网!</b>archar(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:=ptidfrom p_a a,(select @lagfield:=0,@oldptid:='') r) a where rn<=3

四、总结

MySQL根据ptid分组,分别对分组内进行标注序号,然后根据序号取出各分组内的记录


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:MySQL分组排序_MySQL

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址