SQL SERVER 找「上一筆」、「下一筆」的值

寫程式的時候,可能會需要連續編輯或閱覽資料,會用到【上一筆】、【下一筆】的動作,
如果TABLE有連續編號的欄位,當然用該欄位判斷即可,
但通常都會下ORDER BY排序,那就不能用原本的編號啦~

故~需要在選定編輯該筆資料時,也得知到上下一筆的KEY值,
找了很多方法,下列只要個下一個SELECT即可得到上下一筆的KEY。

【上一筆】
SELECT RowNo , id , no , name
FROM (  select top 100 percent ROW_NUMBER() OVER(order by BBB desc ) as RowNo , *
FROM TableA
) as TableB
WHERE RowNum =
(    SELECT RowNo
FROM
(    select top 100 percent ROW_NUMBER() OVER(order by BBB desc ) as RowNo , *
FROM TableA
) as TableB
WHERE id =’123′
)  – 1

【下一筆】
SELECT RowNo , id , no , name
FROM (
select top 100 percent ROW_NUMBER() OVER(order by BBB desc ) as RowNo , *
FROM TableA
order by BBB desc
) as TableA
WHERE RowNo =
(    SELECT RowNo
FROM
(    select top 100 percent ROW_NUMBER() OVER(order by BBB desc ) as RowNo , *
FROM TableA
order by BBB desc
) as TableA
WHERE id =’123′
) + 1


by mhchen15 on 15 5 月, 2012 in SQL SERVER, 資料庫 - Tags:
Tags:

There are no comments.

Name*: Website: E-Mail*:
XHTML: You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>