2 lnktoking lnkToKing 于 2016.03.16 15:28 提问

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查吗

2个回答

lnkToKing
lnkToKing   2016.03.17 12:20
已采纳

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

 select * from table where 组名 in (select  组名 from table group by 组名 order by 组名 limit 0, 2) order by 组名, id
caozhy
caozhy   Ds   Rxr 2016.03.16 18:48

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

lnkToKing
lnkToKing 是按组名分组并排序,但group by 组名 后只能取分组里的一条数据,我要的是分组后前10组的所有数据
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
[mysql] 先按某字段分组再取每组中前N条记录
From: http://blog.chinaunix.net/uid-26729093-id-4294287.html 请参考:http://bbs.csdn.net/topics/330021260 create table t2 (     id int primary key,     gid    char,     col1    int,     co
MySQL分组然后取每个分组中按照某些字段排序的topN条数据
MySQL分组然后取每个分组中按照某些字段排序的topN条数据 建表 CREATE TABLE `t` ( `a` int(11) DEFAULT NULL, `b` int(11) DEFAULT NULL, `c` int(11) DEFAULT NULL, `itime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UP
MySql 按某一字段分组,同时取每组的前三行数据
-- 按gid分组后,查询col2的前三名 -- 方法一 SELECT a.* FROM t2 a LEFT JOIN t2 b ON a.gid=b.gid AND a.col2<=b.col2 GROUP BY a.id,a.gid,a.col1,a.col2 HAVING COUNT(b.id) ORDER BY a.gid,a.col2 desc; -- 方
Oracle 以某字段分组,以某字段排序,取前几条
 select * from (select 表.*, row_number() over(partition by 以此字段为分组  order by 以此字段排序 desc) rn from 表) where rn=1   --表示取第一个
先按照某字段分组然后再取每组中的前两条
From: http://blog.chinaunix.net/uid-26729093-id-4294287.html 请参考:http://bbs.csdn.net/topics/330021260 create table t2 ( id int primary key, gid char, col1 int, col2 int )
oracle 按照分组字段,排序字段取出第一行
wm_concat在行转列的时候非常有用,但在行转列的过程中的排序问题常常难以控制。 可见下面例子: 准备测试表: drop table t; create table t (n number,m number); insert into t values(1,1); insert into t values(5,3); insert into t values(3,3); ins
SQL数据分组后取最大值或者取前几个值(按照某一列排序)
今日在做项目的时候,项目中遇到需要将数据分组后,分组中的最大值,想了想,不知道怎么做,于是网上查了查,终于找到了思路,经过比较这个查询时目前用时最快的,其实还有别的方法,但是我觉得我们只掌握最快的方法就行 ,好了,不说废话了! 直接上内容吧:以下数据是通过 SELECT [CustomerCaseNo],[PaymentsTime] FROM [BOMSDatabase].[dbo].[BAL
MySql按一个字段分组并且取另一个字段最大值的记录
要求:获得按table1_id分组,并且age最大的记录信息,即2、3、5条方法一:select * from (select * from table2 order by age desc) as a group by a.table1_id方法二:select a.* from table2 as a where age = (select max(age) from table2 where
【mysql 分组取前几条】 先按某字段分组再取每组中前N条记录
先造数据 1、建表CREATE TABLE `t2` ( `id` int(11) NOT NULL, `gid` char(1) DEFAULT NULL, `col1` int(11) DEFAULT NULL, `col2` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=u
sql按照首字符分组
又是一条sql语句。 前两天,朋友问我一个问题:若表里面的数据已经排过序了(字符串排序),我要怎么查询才能够从里面按照首字母分组呢?例如(a11,a12,a34,b22,b34)=> [(a11,a12,a34),(b22,b34)]。 当时我一时间没有想出了,只能说了一个拙劣的方案: like 'a%'。既然字母开头分组,那就要查询26次了。 后来的后来,我突然想到,首字母排序,这么常用的东