ALTER TABLE TB 
ADD ID INT IDENTITY
GO
SELECT TOP 2 * FROM TB ORDER BY ID DESC
GO
ALTER TABLE TB 
DROP COLUMN ID
GO

解决方案 »

  1.   

    select id=identity(int,1,1),* into #t from 表
    select top 2 姓名,年龄,信息创建者 from #T order by id desc
      

  2.   


    SELECT TOP 2 * 
    FROM TB 
    ORDER BY ID DESC
      

  3.   

    --sql2005
    select 姓名,年龄,信息创建者 
    from(
    select 姓名,年龄,信息创建者,row_number()over(order by 信息创建者 desc)rn
    from tb
    ) x
    where rn<=2
      

  4.   

    ---测试数据---
    declare @tb table ([姓名] varchar(6),[年龄] int,[信息创建者] int)
    insert @tb
    select '张三',12,1 union all
    select '李四',13,1 union all
    select '王麻子',15,1 union all
    select '牛人',16,1---查询---
    select top 2 * 
    from @tb 
    order by ROW_NUMBER() OVER (order by 信息创建者) desc---结果---
    姓名     年龄          信息创建者       
    ------ ----------- ----------- 
    牛人     16          1
    王麻子    15          1(所影响的行数为 2 行)
      

  5.   

    IF OBJECT_ID('TEMPDB..#')IS NOT NULL DROP TABLE #
    GO
    CREATE TABLE #(姓名 NVARCHAR(10),  年龄 INT,  信息创建者 INT) 
    INSERT # SELECT N'张三'  ,12     , 1 
    INSERT # SELECT N'李四'  ,13    ,  1 
    INSERT # SELECT N'王麻子', 15,      1 
    INSERT # SELECT N'牛人'  ,16 ,     1 
    ALTER TABLE # 
    ADD ID INT IDENTITY
    GO
    SELECT TOP 2 * FROM # ORDER BY 信息创建者, ID DESC
    GO
    ALTER TABLE # 
    DROP COLUMN ID
    GO
    /*姓名         年龄          信息创建者       ID          
    ---------- ----------- ----------- ----------- 
    牛人         16          1           4
    王麻子        15          1           3(影響 2 個資料列)*/
      

  6.   

    百年树人 你那个ROW_NUMBER() 是从哪里来的哟,不懂,还有一个要求我忘了说,就是不要新建表,因为我是通过程序执行sql语句后返回结果集,再加上如果去新建一临时表,那样的话数据的交换量不是很大吗,这里虽然是一张小表,如果遇到大表就不行了.
      

  7.   

    百年树人,我看懂你那个函数的作用了,但是我现在用的是sql server 2000所以你那个函数我用不了,遗憾!!
      

  8.   

    那你能给我一个不用临表的例子吗,结构还是如上,表名:User,你如何实现获取最后两条记录.
      

  9.   

    还是谢谢各位,特别是水族杰纶,还有百年树人,都认真的给出了完整的源码,但我觉得方法都想得比较好,就是还不怎么完美,因为在我们在程序中经常都会采用多表联接,上面都是在修改表结构能过增加一个自递增长ID来实现,百年树人的源码本来行的,结果又由于我现在是用的sql server2000限制了,所以也不能用,还是把分给你们啦!一人10分