2 zhulichun89 zhulichun89 于 2014.11.17 17:10 提问

sql server 2008分组后如何实现分页查询

我的SQL语句是这样的
select left(loginDate,10) ,skipUrl,count(loginDate) FROM loginlog group by skipUrl,left(loginDate,10) order by left(loginDate,10) desc
我自己试了很多总方式都不对的,不知道问题出在哪里的了?希望大侠帮忙解决下的了谢谢!
select top 10 left(loginDate,10) ,skipUrl,count(loginDate)from loginlog
where not exists(select top 20 left(loginDate,10) ,skipUrl,count(loginDate) FROM loginlog group by skipUrl,left(loginDate,10) order by left(loginDate,10) desc )
group by skipUrl,left(loginDate,10) order by left(loginDate,10) desc
执行结果是没有数据的,可数据库中有数据的。

2个回答

fredrickhu
fredrickhu   Ds   Rxr 2014.11.18 08:29
已采纳

既然是 2008 用公用表达式配合 ROW_NUMBER()OVER()比较好
;with cte as
(
select left(loginDate,10) as loginDate ,skipUrl,count(loginDate) as loginDatenum FROM loginlog group by skipUrl,left(loginDate,10)
)
,cte1 as
(
select id=row_number()over(partition by loginDate,skipUrl order by loginDate desc),* from cte
)

select loginDate,skipUrl ,loginDatenum from cte1 where id between 10 and 20

zhulichun89
zhulichun89 不知道什么原因我执行后的ID都是1的将partition by loginDate,skipUrl去掉后行号就正常的了!谢谢你的了
接近 3 年之前 回复
reenjie
reenjie   Rxr 2014.11.18 08:54

select top 10 left(loginDate,10) ,skipUrl,count(loginDate)from loginlog
where not exists(select top 20 left(loginDate,10) ,skipUrl,count(loginDate) FROM loginlog group by skipUrl,left(loginDate,10) order by left(loginDate,10) desc )
group by skipUrl,left(loginDate,10) order by left(loginDate,10) desc

1)当not exists()中的子查询select top 20没有数据,not exists()条件成立,但是select top 10也是没有数据的。
2)当not exists()中的子查询select top 20有数据,not exists()条件不成立,这样select top 10的数据在该条件下也是没有数据的。

分页的方法有多种,row_number(),identity(int,1,1)临时表,not in等 都可以。
这里就写not in;参数@page是当前第几页
select top 10*@page left(loginDate,10),skipUrl,count(loginDate) as qty from loginlog where 主键 not in (select top 10*(@page-1) 主键 from loginlog group by skipUrl,left(loginDate,10) order by left(loginDate,10) desc) group by skipUrl,left(loginDate,10) order by left(loginDate,10) desc

zhulichun89
zhulichun89 谢谢的!
接近 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片