首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

复杂排序后,用一条SQL语句找出特定条数据的前一条数据或后一条数据.该怎么解决

2012-02-24 
复杂排序后,用一条SQL语句找出特定条数据的前一条数据或后一条数据.比如表:aabbcc0400d0500e1300c1700b260

复杂排序后,用一条SQL语句找出特定条数据的前一条数据或后一条数据.
比如表:

aa     bb     cc

0       400     d
0       500     e  
1       300     c
1       700     b  
2       600     a

排序方式为aa   asc,bb   asc.其中aa不唯一,bb唯一.

我现在知道cc=c的这条数据.想找出它的前一条数据(即cc=e的那条数据)

怎么写??

[解决办法]
select
top 1 b.*
from
表 a,表 b
where
a.cc= 'c ' and (a.aa> b.aa or (a.aa=b.aa and a.cc> b.cc))
order by
b.aa,b.bb
[解决办法]
--找前一条数据(排序方式为aa asc,bb asc.其中aa不唯一,bb唯一)
select
top 1 b.*
from
表 a,表 b
where
a.cc= 'c ' and (a.aa> b.aa or (a.aa=b.aa and a.bb> b.bb))
order by
b.aa,b.bb
--找后一条数据(排序方式为aa asc,bb asc.其中aa不唯一,bb唯一)
select
top 1 b.*
from
表 a,表 b
where
a.cc= 'c ' and (a.aa <b.aa or (a.aa=b.aa and a.bb <b.bb))
order by
b.aa,b.bb


[解决办法]
select top 1 b.* from 表 a,表 b
where a.cc= 'c ' and (a.aa*100000+a.bb> b.aa*100000+b.cc)
order by b.aa,b.bb
select top 1 b.* from 表 a,表 b
where a.cc= 'c ' and (a.aa*100000+a.bb <b.aa*100000+b.cc)
order by b.aa,b.bb

热点排行