分页-mysql某个字段排序后按这个字段分组取前10个的数据

问题描述

mysql某个字段排序后按这个字段分组取前10个的数据

需求是按某个字段分组,再按分组分页,取出每页分组里的所有数据。
例如表数据

Id 组名
1    A
2    A
3    B
4    A
5    B
6    C
7    F
8    C
9    D
10   E
11   F

每页取两组数据,第一页结果是

Id 组名
1    A
2    A
4    A
3    B
5    B

第二页结果是

Id 组名
6    C
8    C
9    D

第三页结果是

Id 组名
10   E
7    F
11   F

这有办法用一条sql查吗

解决方案

不知道你的分组的依据是什么,至于提取前10个,用select top 10 from ... 即可。

解决方案二:

已经知道怎么写了,留下记录,给大家参考

 select * from table where 组名 in (select  组名 from table group by 组名 order by 组名 limit 0, 2) order by 组名, id
时间: 2024-11-03 11:10:33

分页-mysql某个字段排序后按这个字段分组取前10个的数据的相关文章

orderby-Oracle 排序后取前10条出错

问题描述 Oracle 排序后取前10条出错 (http://img.ask.csdn.net/upload/201509/25/1443167518_195061.jpg) Oracel中,我想在子查询中先分组,在排序,最后在外层做一个,取排序后结果的前10条结果 解决方案 他说你的语法错误,你检查下语法 解决方案二: 子查询需要命名,就是外层要 select * from (子查询语句)s where .... 解决方案三: order by 的问题,order by 后边不能用子查询的结果

oracle left join 后怎么取前10条数据?

问题描述 oracle left join 后怎么取前10条数据? 如题 oracle left join 后怎么取前10条数据? 求大神帮帮忙,谢谢了 解决方案 where rownum <= 10 解决方案二: ORACLE取前10条数据Oracle获取前10条数据Oracle查询前10条数据 解决方案三: 直接select top10 * from a表 left join b表 on --; 解决方案四: select * from (select ROWNUM as num,A.* f

生成多字段排序分页的SQL的通用类_实用技巧

如果的单一字段排序分页,现在有很多的存储过程和SQL语句,分页的时候,只取pageSize的记录,可遇见的问题是: 这个单一字段必须是唯一的 这个字段必须是可以被排序的 不支持多字段排序 针对这一问题,我用C#做了一个类,解决以上的对多字段排序分页和每次都取pageSize条记录的问题 先看看代码:  复制代码 代码如下: using System;  using System.Collections.Specialized;  namespace web  {      /// <summar

java操作mongoDB实现按两个字段排序的问题

问题描述 java操作mongoDB实现按两个字段排序的问题 java操作mongoDB,想通过先按照某一字段排序,在该字段中有相同值时按照另一字段排序,怎么实现? db.adult.find().sort({age:1label1})是直接操作mongoDB的代码 解决方案 .sort(fields) Order by the given fields. There are several equivalent syntaxes:.sort({field1: -1 field2: 1}) de

mysql使用GROUP BY分组实现取前N条记录的方法_Mysql

本文实例讲述了mysql使用GROUP BY分组实现取前N条记录的方法.分享给大家供大家参考,具体如下: MySQL中GROUP BY分组取前N条记录实现 mysql分组,取记录 GROUP BY之后如何取每组的前两位下面我来讲述mysql中GROUP BY分组取前N条记录实现方法. 这是测试表(也不知道怎么想的,当时表名直接敲了个aa,汗~~~~): 结果: 方法一: 复制代码 代码如下: SELECT a.id,a.SName,a.ClsNo,a.Score FROM aa a LEFT J

MySQL中按照多字段排序及问题解决_Mysql

因为在做一个项目需要筛选掉一部分产品列表中的产品,使其在列表显示时排在最后,但是所有产品都要按照更新时间排序. 研究了一下系统的数据库结构后,决定将要排除到后面的产品加为粗体,这样在数据库中的"ifbold"就会被标记为1,而其他产品就默认标记为0,然后就打算使用MySQL在Order By时进行多字段排序. Order by的多条件分割一般使用英文逗号分割,所以我测试的SQL如下: 复制代码 代码如下: select * from {P}_product_con where $scl

加密-API请求 所有参数按照字段名的ascii码从小到大排序后

问题描述 API请求 所有参数按照字段名的ascii码从小到大排序后 URL:http://api.pcaexpress.com.au/tracking 请求类型:POST 请求参数: 参数 类型 api_id 字符串 必填 test 字符串 data 字符串 必填 sign 字符串 必填 除sign字段外,所有参数按照字段名的ascii码从小到大排序后使用keyvalue的格式(即key1value1key2=value2-)拼接而成,空值不传递,在拼接完的字符串前后俩段都加上API KEY密

mysql数据库text字段排序实现语句

mysql中,默认对text字段进行排序的话是按text字段的首字符进行排序,即假如某表结构如下: 如果默认对此text类型的字段进行排序的话,如select * from table order by f1 asc. 结果可能如下图这样: 发现mysql对text类型的字段排序时只对首字符进行排序,并不是我们所预期的结果(按数字大小排序). 所以如果想要解决这个问题,我们可以使用mysql的一个内置函数:cast,CAST ( expression AS data_type ).cast是一个

mysql按ID排序(转)

自己建表的时候,把一个字段类型创建为varchar(2) ,其实应该建为int(2)的. 因为我只允许输出数字.这本来也没什么,无非就是占点空间,懒得改了.但是今天在后台发现排序有问题.于是,没办法,改之.下面简单说一下MySQL的varchar排序问题,引以为戒. 下面,我从数据库里面以server_id排一下序,大家来看一下排序后的结果: select server_id from cardserver where game_id = 1 order by server_id desc li