获取查询的上一行

时间:2014-10-15 23:33:37

标签: sql sql-server select

做一个选择我得到一行,我想得到表中的前一行。

create table t1
id char(3),
dat datetime
); 

id        dat
a  2014-04-21
b  2014-10-01
c  2014-10-15

select id from t1 where id='c'

并希望找到前一行,即b

2 个答案:

答案 0 :(得分:2)

怎么样:

DECLARE @id CHAR(3)
SET @id = 'c'
select 
  id 
from 
  table 
where 
  id=@id
  OR 
  id = (SELECT MAX(id) FROM table WHERE id < @id)

答案 1 :(得分:1)

获取id不大于指定值的所有行,然后将结果限制为前两行:

SELECT TOP (2)
  id
FROM
  t1
WHERE
  id <= 'c'
ORDER BY
  id DESC
;