哪位大哥能帮我看一下啊,sql分页的语句怎么查都是第一页的内容

major 2014-05-25 12:12:32
select top 12 b.*,a.area_name from jy_cs_e_1.dbo.wx_baby b left join jy_cs_e_1.dbo.wx_area a on b.area_id=a.area_id
and b.baby_id<>all(select top 12 b.baby_id from jy_cs_e_1.dbo.wx_baby b left join jy_cs_e_1.dbo.wx_area a on b.area_id=a.area_id )
...全文
270 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
还在加载中灬 2014-09-25
  • 打赏
  • 举报
回复
既然是分页,我居然找不到ORDER BY 没有ORDER BY 有时候TOP 不会按我们的意愿来
大志_若愚 2014-09-25
  • 打赏
  • 举报
回复
推荐使用row_number,并写成存储过程,这样效率上会高很多
大志_若愚 2014-09-25
  • 打赏
  • 举报
回复

select 
	top 12 b.*
	,a.area_name 
from jy_cs_e_1.dbo.wx_baby b  
left join jy_cs_e_1.dbo.wx_area a 
on b.area_id=a.area_id 
and b.baby_id <> all
(
	select top 12 b.baby_id from jy_cs_e_1.dbo.wx_baby b 
	left join jy_cs_e_1.dbo.wx_area a 
	on b.area_id=a.area_id 
)

--查第二页的数据[13-24条]

select 
	top 24 b.*
	,a.area_name 
from jy_cs_e_1.dbo.wx_baby b  
left join jy_cs_e_1.dbo.wx_area a 
on b.area_id=a.area_id 
and b.baby_id <> all
(
	select top 12 b.baby_id from jy_cs_e_1.dbo.wx_baby b 
	left join jy_cs_e_1.dbo.wx_area a 
	on b.area_id=a.area_id 
)

--查第三页的数据[25-36条]

select 
	top 36 b.*
	,a.area_name 
from jy_cs_e_1.dbo.wx_baby b  
left join jy_cs_e_1.dbo.wx_area a 
on b.area_id=a.area_id 
and b.baby_id <> all
(
	select top 24 b.baby_id from jy_cs_e_1.dbo.wx_baby b 
	left join jy_cs_e_1.dbo.wx_area a 
	on b.area_id=a.area_id 
)

--外面的 top 后的数目 为 页数 * 每页的条数
--里面的 top 后的数目 为 (页数-1) * 每页的条数
LongRui888 2014-05-25
  • 打赏
  • 举报
回复
如果是2005,建议使用 row_number吧,效率也高,也方便

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧