代码之家  ›  专栏  ›  技术社区  ›  NateJ Richard Berg

SQL行号()的访问函数或表达式等效项?

  •  3
  • NateJ Richard Berg  · 技术社区  · 14 年前

    在Access中,当执行INSERT查询时,我可以做什么来模拟TSQL ROW_NUMBER()函数的行为?

    2 回复  |  直到 14 年前
        1
  •  5
  •   Robert Harvey Isaac Blanco    14 年前

    老掉牙的好人:

    如何对查询中的记录进行排序
    http://support.microsoft.com/kb/208946

        2
  •  0
  •   Joop Muis    11 年前

    另一种选择是使用一小块VBA(即如果您真的在Access中工作,而不仅仅是使用Access数据库)

    Option Compare Database
    Dim rn As Long
    
    Function ResetRownumber() As String
        rn = 0
        ResetRownumber = "OK"
    End Function
    Function RowNumber(dummyID As Integer) As Long
        If (dummyID > 0) Then
            rn = rn + 1
            RowNumber = rn
        End If
    End Function
    

    在开始查询之前调用ResetRownumber() 然后

    SELECT RowNumber(anyfield) AS RowNum, OtherField FROM SomeTable
    

    这会给你一个行号。 传递一个选定的字段名不是可选的,否则VBA函数只调用一次,而不是每行调用一次。 警告: 仅在有限数量的记录上使用它,因为通过为每个选定行调用VBA代码,查询将显著减慢。