(1)传个id进来,根据传入的id查询此id的上一条记录与下一条记录,id可能是不连续的。
(2)有一个表A有列A1,A1,A3,A4,A5,其中A5不是索引,但可以唯一标识,现在要得到这样的结果:
A1 A3 A5
1111 3333 5555
SQL 语句怎么写?要性能很好那种求高人解答。
(2)有一个表A有列A1,A1,A3,A4,A5,其中A5不是索引,但可以唯一标识,现在要得到这样的结果:
A1 A3 A5
1111 3333 5555
SQL 语句怎么写?要性能很好那种求高人解答。
(
select rn=row_number()over(order by id),*
from tb
)
select *
from t
where rn=(select rn-1 from t where id=@id) --rn-1 上一条,rn+1下一条,rn 本条记录
(
select rn=row_number()over(order by id),*
from tb
)
select *
from t
where rn=(select rn-1 from t where id=@id)
--上一条记录
select top 1 * from tb where id < @id order by id desc--下一条记录
select top 1 * from tb where id > @id order by id
A1 A3 A5
1111 3333 5555
---------------------------
select
max(case a when 'a1' then val end) [A1],
max(case a when 'a3' then val end) [A3],
max(case a when 'a5' then val end) [A5]
from tb
上一条:select * from tb where id=(select max(id) from tb where id<@id)
下一条:select * from tb where id=(select min(id) from tb where id>@id)
(
select rn=row_number()over(order by getdate()),*
from tb
)
select *
from t
where rn=(select rn-1 from t where id=@id) --rn-1 上一条,rn+1下一条,rn 本条记录