MySQL 分组后在分组内排序,每个分组中取前 N 条
获取各类别下点击数最多的前 2 个商品,并按点击数降序排序:
SELECT p_type, p_name, p_view, row_num FROM (SELECT p_type, p_name, p_view, IF(@bak=p_type,@row_num:=@row_num+1,@row_num:=1) AS row_num, @bak:=p_type FROM (SELECT p_type, p_name, p_view FROM products GROUP BY p_type, p_name, p_view ORDER BY p_type, p_view DESC ) a, (SELECT @row_num:=0, @bak:='') b) c WHERE row_num<=2
注意:
- 赋值与比较
- 比较:
@bak=p_type
- 赋值:
@bak:=p_type
- 比较:
- 代码顺序
- 调换
IF(@bak=p_type,@row_num:=@row_num+1,@row_num:=1) AS row_num
与@bak:=p_type
顺序将导致结果出错
- 调换
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: 在 Vue.js 中使用 JSX 写组件
下一篇: 不要相信一个熬夜的人说的每一句话
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论