【问题标题】:Access function or expression equivalent of SQL ROW_NUMBER()?访问函数或等效于 SQL ROW_NUMBER() 的表达式?
【发布时间】:2011-03-31 19:29:37
【问题描述】:

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

【问题讨论】:

  • 您想要在 INSERT 期间使用它吗?
  • 是的,先生。到目前为止,我看到的答案涉及编写一个选择 count() 的子查询。不确定这是否适用于 INSERT,因为它将从目标表中进行选择 - Access 是否按顺序执行 INSERT(一次 1 行)?跨度>

标签: tsql ms-access


【解决方案1】:

老歌但好人:

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

【讨论】:

    【解决方案2】:

    另一种选择是使用一小部分 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 代码会显着降低查询速度。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-01
      • 1970-01-01
      • 2018-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-27
      • 2013-08-14
      相关资源
      最近更新 更多