MySQL 分组后取每组前几条记录

需求

一个开服表,包括 gameId 字段、服务器、开服时间等字段
要求对每个游戏最多显示两条开服消息,按时间倒序

SELECT * FROM `tbl_gamekf` `GameKf` LEFT OUTER JOIN `tbl_game` AS `Game`
ON `GameKf`.`gameId` = `Game`.`id` 
WHERE 2 > (SELECT COUNT(*) FROM `tbl_gamekf` WHERE `gameId` = `GameKf`.`gameId` AND `time` > `GameKf`.`time`)
ORDER BY time DESC;

LEFT OUTER JOIN 可以忽略,重点是 WHERE 后的自连接查询

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,898评论 18 399
  • 1、MySQL启动和关闭(安装及配置请参照百度经验,这里不再记录。MySQL默认端口号:3306;默认数据类型格式...
    强壮de西兰花阅读 3,882评论 0 1
  • DataBase-MySQL-PGSQL rm -f *.backup pg_dump -h localhost ...
    燕京博士阅读 3,157评论 0 0
  • mysql数据库中 :database : 文件夹table : 数据表(数据文件) 进入mysqlmysql -...
    赋闲阅读 3,621评论 0 0
  • 面向阳光,阴影便在背后。 今天,天晴,气温略有回升。 感赏儿子在音乐声中醒来,而且快速地洗漱,然后晨读,坚持真不错...
    苇絮轻扬阅读 1,618评论 0 6