2011-03-15 59 views
0
sno acco_no amount 

1 50001  5000 
2 50002  4000 
3 50001  2500 
4 50002  3100 
5 50002  3400 
6 50001  1500 

我想50001的最后2条记录逐一。如何取1 1

select sno, acco_no, amount 
from table 
where acco_no = 50001 
order by tno desc fetch first 2 rows only 

sno acco_no amount 
    6  50001  1500 
    3 50001  2500 

,但我想通过1个记录像下面

1)第一步

select sno, acco_no, amount 
from table 
where acco_no = 50001 

sno acco_no amount 
    6  50001  1500 

2)第二步

select sno, acco_no, amount 
from table 
where acco_no = 50001 

sno acco_no amount 
    3  50001  2500 

注意获取1:不应该删除任何记录

+4

首先:** **为什么二:!?!?!为**什么数据库**? – 2011-03-15 11:31:15

+2

这听起来像是你试图在数据层中放置业务逻辑/工作流程,这并不一定是坏事,但在这种情况下,如果你可以在应用程序级别通过记录集,我认为你会更容易。 – Thyamine 2011-03-15 11:39:35

回答

1

你可以简单地使用LIMIT/OFFSET的那些东西,取决于您使用的数据库... 对Postgres的:http://www.postgresql.org/docs/8.1/static/queries-limit.html

MySQL的限制,关键字有2个参数的限制和偏移定义

select sno, acco_no, amount 
from table 
where acco_no = 50001 LIMIT 0,1 

sno acco_no amount 
    3  50001  2500 

第二

select sno, acco_no, amount 
from table 
where acco_no = 50001 LIMIT 1,1 

sno acco_no amount 
    3  50001  2500