专栏首页程序生涯MySQL获取每个分类下面的前三条数据

MySQL获取每个分类下面的前三条数据

现在项目遇到个问题,我相册图片里面有很多分类,我想取出每个分类下面的前三条数据,应该怎么做呢? 数据结构如下:

DROP TABLE IF EXISTS `t_picture`;
CREATE TABLE `t_picture` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键Id号',
  `admin_id` int(11) NOT NULL DEFAULT '0' COMMENT '操作员id',
  `member_id` int(11) NOT NULL DEFAULT '0' COMMENT '用户id 与admin_id必须有一个为0',
  `admin_name` varchar(50) NOT NULL DEFAULT '' COMMENT '操作员名字',
  `title` varchar(100) NOT NULL DEFAULT '' COMMENT '图片标题',
  `name` varchar(255) NOT NULL DEFAULT '' COMMENT '图片名称',
  `ext` varchar(10) NOT NULL DEFAULT '' COMMENT '图片扩展名',
  `path` varchar(100) NOT NULL DEFAULT '' COMMENT '原图路径',
  `thumbnail_big_path` varchar(100) NOT NULL DEFAULT '' COMMENT '缩大图片路径',
  `thumbnail_small_path` varchar(100) NOT NULL DEFAULT '' COMMENT '缩小图片路径',
  `flag` int(4) unsigned NOT NULL DEFAULT '0' COMMENT '显示状态类型:1、显示2、隐藏',
  `add_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '加添时间',
  `update_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '修改时间',
  `album_id` int(11) NOT NULL DEFAULT '0' COMMENT '图片所在相册ID',
  `weight` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '权重,用于景点图片排序。253,254,255 作为预留值,用于3级置顶用。',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8mb4 COMMENT='线路图片管理';

方法1:

SELECT a.* FROM t_picture as a WHERE (SELECT COUNT(*) FROM t_picture as b WHERE b.album_id=a.album_id AND b.id>=a.id) <=3 ORDER BY a.album_id ASC,a.id DESC;

方法2:

SELECT 
    a.*
FROM
    t_picture AS a,
    (SELECT 
        GROUP_CONCAT(id order by id desc) AS ids
    FROM
        t_picture
    GROUP BY album_id) AS b
WHERE
    FIND_IN_SET(a.id, b.ids) BETWEEN 1 AND 3
ORDER BY a.album_id ASC, a.id DESC;

方法3:

select a.*,count(*) as num from t_picture as a inner join t_picture as b ON a.album_id=b.album_id where b.id>=a.id group by a.id having num<=3;

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 操作系统角度谈测试管理和自动化测试

    我们不得不佩服冯诺依曼和早期的计算机科学家们,不只是因为计算机这个伟大产物的诞生和发展,更主要的是,这个行业中的任何分支都似乎有无尽的可能性,让一些大牛们终其一...

    用户7657330
  • linux之shell

    相信很多同学都不陌生这个脚本,尤其是运维的同学,少不了吧。公司的运维系统就靠你了。shell是一种解释型的语言,我们写好了代码后,不需要编译,直接运行即可。平时...

    用户7657330
  • HTML加载顺序

    完成了若干个基于WEB的项目, 也了解了从前端的js,css,html到后端python/php等, 二者如何交互, 最终浏览器如何执行, 这些在心里也已经很明...

    用户7657330
  • 电商设计手册之基础商品信息

    第一篇我们主要看看一个入门的电商平台(B2C)如何去构建自己的基础商品信息,其实这个事情很简单,想想我们的现实生活,商家摆放商品到货架,客户从货架挑选商品,客户...

    大愚
  • 电商设计手册之基础商品信息

    第一篇我们主要看看一个入门的电商平台(B2C)如何去构建自己的基础商品信息,其实这个事情很简单,想想我们的现实生活,商家摆放商品到货架,客户从货架挑选商品,客户...

    用户1093396
  • 电商系统设计之商品 (上)

    电商大伙每天都在用,类似某猫,某狗等。电商系统设计看似复杂又很简单,看似简单又很复杂。本章适合初级工程师及中级工程师细看,大佬请随意。

    程序员宝库
  • 电商系统设计之商品 (上)

    商品的设计是电商系统中占据重要地位,如何设计出高扩展,高性能的商品系统并非一件简单的事情,我的设计是观摩互联网各大佬的设计后自行研究的,并非完全正确,但也不完全...

    CrazyCodes
  • 电商设计手册之用户体系

    一直从事互联网电商开发三年多的时间了,回头想想却对整个业务流程不是很了解,说出去很是惭愧。但是身处互联网电商的环境中,或多或少接触了其中的各个业务,其次周边还有...

    大愚
  • 电商设计手册之用户体系

    一直从事互联网电商开发三年多的时间了,回头想想却对整个业务流程不是很了解,说出去很是惭愧。但是身处互联网电商的环境中,或多或少接触了其中的各个业务,其次周边还有...

    用户1093396
  • 拨乱反正-重构是门艺术活

    因为我们部门内容平台的文章系统之前遗留了很多问题,急需解决这些具有"坏味道"的代码。最后因为其他人手头里都有其他工作,最后这些任务就交给了我。以下是急需解决的问...

    sanshengshui

扫码关注云+社区

领取腾讯云代金券