sql分页显示的问题

字段AAABBCDDEEEFG我想得到3页结果,分别为ADGADBECECEF也就是说我想每页有3大条数据(A,B,C)不管有多少小条数据,sql该怎么写。... 字段A
A
A
B
B
C
D
D
E
E
E
F

G
我想得到3页结果,分别为
A D G
A D
B E
C E
C E
F
也就是说我想每页有3大条数据(A,B,C)不管有多少小条数据,sql该怎么写。
展开
 我来答
jsczwangx
2013-11-21 · TA获得超过1222个赞
知道小有建树答主
回答量:777
采纳率:100%
帮助的人:649万
展开全部

lz,这个问题其实和普通的分页问题是一样的,只是规则不同而已,普通的分页是以每页条数来分的,比如每页20条,正排前20条,倒排前20条,这样两页的数据就出来了,这样通过拼接sql可以完成,这种分页函数方法,网上多了去了。你这个问题呢只是变了角度,其实本质是一样的,你这里是以分类数来决定分页。我写个简单的sql给你看一下

create table zhidao1121
(id char(1));
insert into zhidao1121
select 'A' 
UNION ALL
SELECT 'A'
UNION ALL
SELECT 'B'
UNION ALL
SELECT 'B'
UNION ALL
SELECT 'C'
UNION ALL
SELECT 'D'
UNION ALL
SELECT 'D'
UNION ALL
SELECT 'E'
UNION ALL
SELECT 'E'
UNION ALL
SELECT 'E'
UNION ALL
SELECT 'F'
UNION ALL
SELECT 'G';
SELECT T1.id,T2.RN FROM zhidao1121 T1,
(SELECT T.ID,ROW_NUMBER()OVER(ORDER BY ID)RN FROM(
SELECT DISTINCT ID FROM zhidao1121)T)T2 WHERE T1.ID=T2.id;
--结果
A 1
A 1
B 2
B 2
C 3
D 4
D 4
E 5
E 5
E 5
F 6
G 7
或者还可以这样
SELECT T1.id,T2.RN%3+1 FROM zhidao1121 T1,
(SELECT T.ID,ROW_NUMBER()OVER(ORDER BY ID)RN FROM(
SELECT DISTINCT ID FROM zhidao1121)T)T2 WHERE T1.ID=T2.id;
--结果
A 2
A 2
B 3
B 3
C 1
D 2
D 2
E 3
E 3
E 3
F 1
G 2
这样写希望对你理解有帮助,有问题再追问吧,望采纳。
o0淡水0o
2013-11-21 · 超过17用户采纳过TA的回答
知道答主
回答量:35
采纳率:0%
帮助的人:35.3万
展开全部
给你个思路:
select * from table t1,
(select a from table group by a order by a offset n limit 3 ) t2
where t1.a = t2.a

其中 offset n limit 3 为分页的mysql写法,如果不是你用的数据库,自己转换下写法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式