select top 1 * from table order by name Asc这句话的意思是返回table下name列的最后一条记录对吧?若table中name列为:
111
114
112
110
113我需要的是name列的最后一项113的数字,可实际返回是110,高手帮忙给改改如何?

解决方案 »

  1.   

    select top 1 * from table order by name DESC
      

  2.   


    --你这个并不是按某个字段排序,而是取最后一条。
    --可以借助临时表,如下:
    select id=identity(int,1,1),* into # from [table]
    select top 1 * from # order by id desc
      

  3.   

    declare @tmp table([id] int identity(1,1),[name] varchar(10))insert @tmp
    select [name]
    from tableselect top 1 * 
    from @tmp 
    order by name Desc
      

  4.   

    因为你 order by name Asc 按字段name顺排序
    所以排序后是:
    110
    111
    112
    113
    114
    然后你取top 1,那么结果就是 110了
    数据表中是否还有ID字段等?
    如果有ID号是流水号.可以是:Select Name From Table Where ID=(Select Max(ID) From Table)
    Select Top 1 Name From Table Order By ID Desc如果数据量大,不建议把全部数据取出再拿 top 1. 
      

  5.   

    create table ta(vname varchar(20))
    insert ta select
    '111' union all  select
    '114' union all select
    '112' union all select
    '110' union all select
    '113'  
    go
    declare   tb   cursor   scroll   local 
    for 
    select   *   from   ta open   tb 
    fetch   first      from   tb   --   第1条 
    /*
    vname                
    -------------------- 
    111(所影响的行数为 1 行)
    */fetch   ABSOLUTE   2     from   tb   --   第2条 
    /*vname                
    -------------------- 
    114(所影响的行数为 1 行)
    */fetch    last   from   tb   --   last 
    /*
    vname                
    -------------------- 
    113(所影响的行数为 1 行)
    */
    deallocate   tb drop table ta
      

  6.   

    厉害,按您说的方法问题解决了,取得了最后一项的值,谢谢!追加问个问题...如果我加个条件呢...我加个型号条件,一样是查这行的记录,但要求等于前面过来的变量...举个例...
    110  a
    111  b
    112  a
    113  b
    114  a我要等于b的最行一个列记录...也就是113 b,帮忙再给看看...
    这是按您讲的更改后的我的页面代码,帮我看看有没有错哟,呵呵!
    <%
    dim conn,sql,rs
    set rs = server.createobject("adodb.recordset")
    set conn = server.createObject("ADODB.Connection")
    conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("/database/data.mdb")
    exec = "Select itworkitem From cont Where it=(Select Max(itid) From cont)"
    exec = "Select Top 1 itworkitem From cont Order By itid Desc"
    rs.open exec,conn,1,1
    %>
    <%=rs("itworkitem")%>
    <%
    rs.close
    set rs=nothing
    conn.close
    set conn=nothing
    %> 
      

  7.   


    --那就:
    Select Name,字段2 From Table Where ID=(Select Max(ID) From Table WHERE 字段2='b')
      

  8.   

    SQL Server的数据存储就没有顺序,Top n对于没有主健的或者没有明确可排序字段的表完全没有意义。
    应该加主键。最方便的是流水号的那种。
      

  9.   

    谢谢大家伙,不知道说啥,眼泪哗哗的...我把整个情况说说吧!有有三张表分别是...ca
    caid caname caopentime causer caclient castate caitem caclosetime
    1 90dc 2008-7-1 用户甲 HP open
    2 65adc 2008-3-1 用户乙 DELL open item
    itid itworkitem itstate itdepartment ituser itcontent itbill ithour
    1 采购物料 物料备料 采购课 用户乙 采购单 080701 1
    2 样机测试 样机研发 研发课 用户甲 测试报告 adp08-10dc 5
    3 随便试试 正在准备 业务课 用户丙 测试作业 888888 2
    4 定单作业 业务开发 业务课 用户丙 email zw08001 2cont
    itid itname itsort itworkitem itstate itdepartment ituser itcontent itbill ithour itmg
    3 90dc 7 测试样品机 样机研发 研发课 用户甲 测试报告 080101 5 No
    5 65dc 3 采购物料 物料采购 采购课 用户乙 采购单 234234 3 No他们之间没做视图或表关系,因为我还不会...我是这样设计计划的...CA是项目总表,如果我开一个项目,我将会由他增加一个记录,就等于多个项目了...ITEM是整个项目的细项,就是每个项目要完成的东西详细的每一条一条的记录...CONT是整个项目的储存数据库,所有关于项目的数据都存在这...然后我想实现这些情况...先用重复调出CA的数据,看看现在有多少项目,且在什么状态...这是我实现的网页,
    我现在要用的就是根据CANAME调到CONT里现在的状态,就是采购物料...但现在是整个表的最后一项,非对应项目的...
    caid caname caopentime causer caclient castate caclosetime 
    1 90dc 2008-7-1 用户甲 HP open 采购物料 
    2 65adc 2008-3-1 用户乙 DELL open 采购物料不知道我说得是否清楚...
      

  10.   

    exec = "Select itworkitem,caname From cont Where itid=(Select Max(itid) From cont WHERE caname ='b')"好像不行也...<%rs("caname")%>加入无效...在前面加上exec = rs("caname")=cnname也不行...
      

  11.   

    exec = "Select itworkitem,itname From cont Where itid=(Select Max(itid) From ca WHERE caname ='b')"让我改得乱七八糟的,还是不行...
      

  12.   

    基础太差,太不好弄了...继续求解...
    exec = "Select itworkitem From cont Where itid in(Select Max(itid) From cont WHERE itname ='b'"都写成这样了,还是输入一样的结果...只想要一个结果...对过ca表格中的caname查询调用cont表格中的itname等于caname的行的itworkname值...