`

分组查询 每组查询前5条

阅读更多

按班级分组查询,每组查询出5条数据。

数据表结构如下:

DROP TABLE IF EXISTS `test1`;
CREATE TABLE `test1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `class` int(11) DEFAULT NULL COMMENT '班级',
  `name` text COMMENT '名姓',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of test1
-- ----------------------------
INSERT INTO `test1` VALUES ('1', '2', 'a');
INSERT INTO `test1` VALUES ('2', '2', 'b');
INSERT INTO `test1` VALUES ('3', '2', 'c');
INSERT INTO `test1` VALUES ('4', '2', 'd');
INSERT INTO `test1` VALUES ('5', '2', 'e');
INSERT INTO `test1` VALUES ('6', '2', 'f');
INSERT INTO `test1` VALUES ('7', '2', 'g');
INSERT INTO `test1` VALUES ('8', '2', 'h');
INSERT INTO `test1` VALUES ('9', '3', 'i');
INSERT INTO `test1` VALUES ('10', '3', 'j');
INSERT INTO `test1` VALUES ('11', '3', 'k');
INSERT INTO `test1` VALUES ('12', '3', 'l');
INSERT INTO `test1` VALUES ('13', '3', 'm');
INSERT INTO `test1` VALUES ('14', '3', 'n');
INSERT INTO `test1` VALUES ('15', '3', 'o');
INSERT INTO `test1` VALUES ('16', '3', 'p');
INSERT INTO `test1` VALUES ('17', '4', 'q');
INSERT INTO `test1` VALUES ('18', '4', 'r');
INSERT INTO `test1` VALUES ('19', '4', 's');

 

 实现sql:

select t.* from test1 t  where 5>(select count(*) from test1 where class=t.class and id<t.id) order by id desc

因为2次select 的都是同一张表,所以需要用 "from test1 t"  区分下。 

查询结果如下图:



 

 

  • 大小: 34.8 KB
  • 大小: 41.2 KB
分享到:
评论

相关推荐

    mysql分组取每组前几条记录(排名) 附group by与order by的研究

    –按某一字段分组取最大(小)值所在行的数据 代码如下: /* 数据如下: nameval memo a 2 a2(a的第二个值) a 1 a1–a的第一个值 a 3 a3:a的第三个值 b 1 b1–b的第一个值 b 3 b3:b的第三个值 b 2 b2b2b2b2 b 4 b4b4 b ...

    SQL Server分组排序取数据的实现

    此文档中详细的记载了,SQL Server分组排序取数据的实现,希望可以帮到下载的朋友们!

    SQL SERVER 分组求和sql语句

    分组后分组合计以及总计SQL语句(稍微整理了一下)MYSQL每隔10分钟进行分组统计的实现方法mysql使用GROUP BY分组实现取前N条记录的方法详解MySQL中的分组查询与连接查询语句sql server如何利用开窗函数over()进行...

    SQL语句分组获取记录的第一条数据的方法

    使用ROW_NUMBER() OVER(PARTITION BY COL1 ORDER BY COL2) 先进行分组 注:根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的). sql语句为: select ...

    java一次性查询处理几百万数据解决方法

    java一次性查询处理几百万数据解决方法 几百万数据是可以处理的 暂时还没试过几千万级的数据处理

    MySql基本查询、连接查询、子查询、正则表达查询讲解

    having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。 having 子句被限制子已经在SELECT语句中定义的列和聚合...

    T-SQL高级查询

    --top 取前N条记录 select top 3 * from student; --alias column name 列重命名 select id as 编号, name '名称', sex 性别 from student; --alias table name 表重命名 select id, name, s.id, s.name from ...

    sql中时间以5分钟半个小时任意间隔分组的实现方法

    主要介绍了sql中时间以5分钟半个小时任意间隔分组的实现方法,在文中给大家提到了sql server时间查询的代码,需要的朋友可以参考下

    Microsoft SQL Server 2008技术内幕:T-SQL查询(第二卷)

    9.3.1 每组中的TOP n 9.3.2 匹配当前值和前一个值 9.3.3 分页 9.4 逻辑转换 9.5 总结 第10章 数据修改 10.1 插入数据 10.1.1 增强的VALUES子句 10.1.2 SELECT INTO 10.1.3 BULK行集提供程序 10.1.4 按最小...

    电话号码查询系统.zip

    (1) 通讯录的每一条信息包括姓名,手机,电话,性别,分组; (2) 输入功能:可以一次完成若干条信息的输入; (3) 显示功能:完成全部通讯录信息的显示 (4) 查找功能:完成按姓名查找通讯信息; (5) 删除...

    分组查询GROUP BY的使用与SQL执行顺序的讲解

    也就是说可以在组里再分组,为数据分组提供更细致的控制。 2、如果在GROUP BY子句中指定多个分组,数据将在最后指定的分组上汇总。 3、GROUP BY子句中列出的每个列都必须是检索列或有效的表达式(但不能是聚集函数...

    《企业人事基本信息管理系统》 sql 期末大作业

    SQL查询至少5到10个(给出数据查询操作:至少给出7种查询方式,分别涉及到:确定集合查询、字符匹配查询、汇总查询、分组查询、连接查询、嵌套查询、带EXISTS或NOT EXISTS 谓词查询等) 视图至少有3个 索引至少有3个...

    SQL常用语句最好用的

    --4、查询TitleAuthor表中,按照Title_ID进行分组查询, --并显示每一组中royaltyper的最大值, --查询限制条件的要求是:au_id的值必须不以”8”开头,但必须包含字符”8”; select max(royaltyper)最大值,Title_...

    SQLServer2008技术内幕T-SQL查询包含源代码及附录A

    9.3.1 每组中的TOP n408 9.3.2 匹配当前值和前一个值413 9.3.3 分页416 9.4 逻辑转换422 9.5 总结424 第10章 数据修改425 10.1 插入数据425 10.1.1 增强的VALUES子句425 10.1.2 SELECT INTO426 10.1.3 BULK行集提供...

    Microsoft+SQL+Server+2008技术内幕:T-SQL查询_源代码及附录 中文版

    9.3.1 每组中的TOP n408 9.3.2 匹配当前值和前一个值413 9.3.3 分页416 9.4 逻辑转换422 9.5 总结424 第10章 数据修改425 10.1 插入数据425 10.1.1 增强的VALUES子句425 10.1.2 SELECT INTO426 10.1.3 BULK...

    [详细完整版]7数据库.doc

    在查询的基础上创建新表 前导知识: SELECT 语句的基本语法 SELECT &lt;目标列名表&gt; FROM &lt;数据源表&gt; [WHERE &lt;查询条件&gt;] [GROUP BY &lt;分组列&gt;] [HAVING &lt;组选择条件&gt;] [ORDER BY &lt;排序列&gt; [ASC"DESC] ] 实验环境 ...

    PyQt5 一组QRadioButton全不选的实现方式

    在项目中遇到buttonGroup下的3个radioButton在选中后,不能恢复初始的...点击choose按钮,可以启动定时器,每2s查询一次3个radiobutton,打印被选中的信息。 点击init按钮,可以让3个radiobutton回到初始全不选的状态。

Global site tag (gtag.js) - Google Analytics