在SQL中使用Top 1而不是循环

时间:2013-11-21 18:31:53

标签: sql sql-server vba

我有以下转换为SQL的vba代码...

      Do While Not sRst1.EOF
            sRst1.MoveLast
            sRst1.MoveFirst

            If (sRst1!Field1 = "FileName") Then
                Exit Do
            End If
            sCtr = sCtr + 1
            sRst1.MoveNext
      Loop

所以基本上我需要获取第一个记录,其中field1等于FileName,我可以选择TOP(1),其中field1 =“FileName”,如果我没有弄错的话?此外,我需要返回计数到达该记录所需的记录数。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

WITH t AS (SELECT *,ROW_NUMBER() OVER(ORDER BY (SELECT 0)) row_num FROM sRst1) 
SELECT field1,row_num FROM t WHERE field1 = 'FileName'

正如FrankPl所指出的,如果你不告诉SQL你想要什么样的顺序,row_num将是有效随机的。替换"(选择0)"用" field1"或其他一些要解决此问题的专栏。