注册 登录
编程论坛 SQL Server论坛

怎样取出数据库表中,最后的三条记录?

hwj20070118 发布于 2007-05-17 21:15, 2675 次点击
怎样取出数据库表中,最后的三条记录,而且要按"顺序"排序,不要按倒序排序?
10 回复
#2
棉花糖ONE2007-05-17 23:52

首先保证你的表有个排序字段,假设是升序排列的

select * from (select top 3 * from table order by column desc) b order by column

#3
bygg2007-05-18 10:28

LS的不太好吧??

如果表中的数据是
1
3
5
2
6
7

那就不能用order by 了..

[此贴子已经被作者于2007-5-21 10:06:45编辑过]

#4
bygg2007-05-18 11:01
create PROCEDURE selDt1
AS
declare @rowid int
begin
select @rowid = (count(*)-3) from tablename
select identity(int,1,1) rownum,* into #tmp from tablename
select id,ta,tb from #tmp where rownum > @rowid
drop table #tmp
end

-----表中有id,ta,tb这三个字段.id为主键且没有规律的排列....
#5
cyyu_ryh2007-05-18 13:15
2楼的也可以,进行了排序功能
#6
bygg2007-05-18 14:35

像我说的那种情况,如果用排序的话,就不能达到要求的..

#7
xuecg2007-05-19 17:52
SELECT * FROM cTable WHERE cColumn IN (SELECT TOP 3 cColumn FROM cTable ORDER BY cCloumn DESC)
不知成不成,没有测试,呵
#8
初学Delphi2007-05-19 18:25

楼上的 你的返回结果肯定会有超过3的情况,你看看3楼的例子 你的结果是4条记录

#9
xuecg2007-05-19 18:45
cColumn可以选择标识,标识中是没有重复的
#10
初学Delphi2007-05-23 11:17
以下是引用初学Delphi在2007-5-19 18:25:04的发言:

楼上的 你的返回结果肯定会有超过3的情况,你看看3楼的例子 你的结果是4条记录

设标识就是自己加条件拉,人家楼主没说这列是自增型也没说这列是主键

#11
mingwangxing2007-05-29 01:09

--可以用游标,从倒数第三行向后一行行查询。
declare @a char(10)
declare @b char(10)
declare oneCursor scroll cursor for
select * from table2

open oneCursor
fetch absolute -3 from oneCursor into @a,@b

while (@@fetch_status=0)
begin
print 'a=' + @a + ' b=' + @b
fetch oneCursor into @a,@b
end

close oneCursor
deallocate oneCursor

1