程序员家园论坛软件开发数据库技术讨论区 多字段排序的时候,怎么取“上一条”、“下一条”?

1  /  1  页   1 跳转 查看:199

多字段排序的时候,怎么取“上一条”、“下一条”?

多字段排序的时候,怎么取“上一条”、“下一条”?

select newsID, isTop, myOrder, nTime
from A_News
where classID = 29
order by isTop, myOrder, nTime desc, newsID desc

newsID是自增字段,access数据库,给定一个newsID,怎么取上一条和下一条?

不要告诉我在列表文件里传递参数到新闻显示的页面,列表文件是分页的,每页的第一条新闻,取不到“上一条”,第页的最后一条新闻,取不到“下一条”

不要告诉我在显示新闻的页面用select newsID from A_News where classID = 29 order by isTop, myOrder, nTime desc, newsID desc,然后用再整个记录集对比,找当前newsID,再取上一条和下一条,如果新闻有5000个,够少了吧?5000个,那每个新闻读取的时候,都要先读取一次5000个记录吗?

不要告诉我下面这种办法:
select newsID from A_News
where classID = 29
and newsID <> @nid
and isTop <= (select isTop from A_News where newsID = @nid)
and myOrder <= (select myOrder from A_News where newsID = @nid)
and nTime >= (select nTime from A_News where newsID = @nid)
order by isTop, myOrder, nTime desc, newsID desc
因为这个是错误的, order by isTop, myOrder, nTime desc, newsID desc,是按字段排序,排在前面的,后面的排序字段值不一定可以用来比较大小

access数据库,谁有办法?教我。。。
 

回复:多字段排序的时候,怎么取“上一条”、“下一条”?

只需要用最大的小于NEWSID的NEWID就是上一条的ID,反之最小的大于NEWSID的NEWSID就是下一条
可以用  select * from table where newsid in (select MAX(newsid) from table where newsid <已知的NEWSID)
 

回复:多字段排序的时候,怎么取“上一条”、“下一条”?

select max(newid)
from table
where newid < @newid

select min(newid)
from table
where newid > @newid
 

回复:多字段排序的时候,怎么取“上一条”、“下一条”?

茫然路过
 

回复:多字段排序的时候,怎么取“上一条”、“下一条”?

建立一个索引??
 

回复: 多字段排序的时候,怎么取“上一条”、“下一条”?



引用:
原帖由 zhgwbzhd 于 2008-9-1 9:05:00 发表
建立一个索引??

我也想要建一个唯一的索引,可以按那几个字段排序,就是,access怎么建呢?
 

回复:多字段排序的时候,怎么取“上一条”、“下一条”?

 
1  /  1  页   1 跳转

版权所有 程序员家园论坛   Sitemap

Powered by Discuz!NT 2.1.202    Copyright © 2001-2008 Comsenz Inc.
Processed in 0.046875 second(s) , 3 queries. 浙ICP备07502118号
返顶部