SQL - 如何确定我选择的记录所在的位置/顺序/计数?

Jas*_*son 5 sql t-sql position count

想象一下,我有一张桌子:

ID     field1       field2
---    -------      ------
111      1          11113
112      1          11114
113      1          44321
114      1          49339
115      2          53234
Run Code Online (Sandbox Code Playgroud)

我对所有记录感兴趣field1 = 1- 特别是field2 = 44321,但我想知道它在我的选择中的位置field1=1(在这种情况下,它是3).

 SELECT * FROM table WHERE field1 = 1 ORDER BY id
Run Code Online (Sandbox Code Playgroud)

会得到我想要的所有记录,但我知道的是数字3(选择中44321的位置 - 它是查询中的第3条记录,我想知道3).

是否有任何优雅的查询我可以找到我特别感兴趣的行的位置,或者我是否需要光标获取并遍历我的记录集并找出一些反向++业务?

我知道我想要的field1,我知道我想要的field2 - 我只想知道field1 + field2在更大的field1 = 1查询中的位置 - 那个3,位置).

Cha*_*ndu 6

试试这个:

POS列将给出您要查找的记录的位置

WITH qry AS
(
    SELECT a.* 
                 ROW_NUMBER() OVER(ORDER BY id)  POS
        FROM table a
     WHERE field1 = 1 
)
SELECT qry.pos
  FROM qry
 WHERE field2 = 44321 
Run Code Online (Sandbox Code Playgroud)