关于排序

skimeister 2005-03-30 09:53:58
一个有一万多数据的表,
其只有一个自动编号字段: ID,和排序用的: OrderID,
OrderID的值是管理员手动加的,作为排序之用.所以其值的大小不连贯以及有重复.

现在我遇到了一个难题,
只得到一个ID值,当用order by OrderID这样的排序查询时,如何得到ID值前一笔和后一笔的数据呢?

我是应用在一个信息发布系统上,当然结果是用order by OrderID输出的.
比如我现在阅读的信息ID号是35,
那么下一条呢?上一条呢?应该如何查询?
我有想过每次都查出全部数据,再看看ID为35的记录排在哪里.....但这样做太差劲了.
...全文
105 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xluzhong 2005-03-31
  • 打赏
  • 举报
回复
order by OrderID,ID
skimeister 2005-03-31
  • 打赏
  • 举报
回复
帮帮忙
rouqu 2005-03-31
  • 打赏
  • 举报
回复
select identity(int,1,1) as NewID,* into tbB from (
select 字段列表 from tbA order by OrderID asc)
--字段列表可以drop掉ID?
create proc....
Dim i as int
sp_execsql "select NewID = " & i & " from tbB where OrderID = 35"
select * from tbB where NewID = (i-1) or NewID = (i+1)
..
仅供参考!
tigerjacky 2005-03-31
  • 打赏
  • 举报
回复
你输出得时候肯定有用到一个列表吧?不可能就无缘无故的得到某一条?既然有列表,怎么会出现你这样的情况呢?
比如你是用ADO.直接使用PRIOR NEXT 就可以得到前后两条.
skimeister 2005-03-31
  • 打赏
  • 举报
回复
还有没有其它方法?好像 xluzhong大侠这样还不行.

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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