已知一个记录集,想得到其中的第10-20条记录,那么SQL语句该怎么写呢?强调一下,目前只知道记录的记录号为10-20

解决方案 »

  1.   

    1,你的记录集=表??
    2,有一个可利用的排序吗??
    那么看看这下吧
    select top 10 a.* from (select top 20 * from 表 order by 姓名) as a
    order by a.姓名 desc
      

  2.   

    记录集=表。
    兄弟这里的“TOP”给了偶启发,偶忘记了这个,TOP还可以这么用的啊,还真是不知道。
    按照兄弟给的例子写了下面这句,只是只能查出前10条记录
    strp = "select top 10 * from (select top 20 * from " & strTableName & " order by " & rstRecords.Fields(0).Name & ")" & " order by " & rstRecords.Fields(0).Name
      

  3.   

    strp = "select top 10 * from (select top 20 * from " & strTableName & " order by " & rstRecords.Fields(0).Name & ")" & " order by " & rstRecords.Fields(0).Name & " DESC"

    strp = "select top 10 * from (select top 20 * from " & strTableName & " order by " & rstRecords.Fields(0).Name & " DESC)" & " order by " & rstRecords.Fields(0).Name总有一个是对的,偶就不试了,你自己试吧。
      

  4.   

    strp = "select top 10 * from (select top 20 * from " & strTableName & " order by " & rstRecords.Fields(0).Name & ")" & " order by " & rstRecords.Fields(0).Name & " DESC"是这个,Top比Order晚发生。DESC是降序。 fredlin(fred)是对的,偶就不蹭他的分了。
      

  5.   

    你要得到 11 条记录?如果是 10 条 10 条地取,有另一个办法: Dim rstEmployees As ADODB.Recordset
    Dim strCnn As String
    Dim strMessage As String
    Dim intPage As Integer
    Dim intPageCount As Integer
    Dim intRecord As Integer ' Open a recordset using a client cursor
    ' for the employee table.
    strCnn = "driver={SQL Server};server=srv;" & _
    "uid=sa;pwd=;database=pubs"
    Set rstEmployees = New ADODB.Recordset
    ' Use client cursor to enable AbsolutePosition property.
    rstEmployees.CursorLocation = adUseClient
    rstEmployees.Open "employee", strCnn, , , adCmdTable

             rstEmployees.PageSize = 10
             If rstEmployees.PageCount >=2 Then rstEmployees.AbsolutePage = 2
      

  6.   

    如果有标识号则可以写为between  10  and 20,如果是记录集则你可以在循环中处理.SQL目前还不提供ROWCOUNT函数
      

  7.   

    多谢各位兄弟,原来后面只要再加一个desc或者asc就可以了,真晕。结贴