我如何获得 Select 的行位置

How do i get the rowposition for an Select

嗨,我的 Table 看起来像

Id  Header  Mo  RefId
 1  Header2 45   1
 4  Header2 10   1
 7  Header1  1   5
 8  Header2  2   5
 9  Header3 77   5
12  Header5 11   2
13  Header9 55   5
14  Header2 22   2

if i select 所有记录 where RefId 5

我想要的结果看起来像

Pos Header  Mo RefId
 1  Header1  1   5
 2  Header2  2   5
 3  Header3 77   5
 4  Header9 55   5

此处SQLFiddle用于测试


更新

就像你看到的那样,我试图从我的结果集中获取行位置,那么有什么方法可以做到这一点吗?以及它的性能如何

我正在使用 SQL Server 2008 R2

因为您没有指定任何 DBMS,这里您可以如何使用 OracleMSSql

select * from (select row_number() over(order by id) as Pos, Header, Mo, RefId from yourTable) x;

现在,这里是如何使用 MySQL

SELECT @pos:=@pos+1 AS Pos, Header, Mo, RefId 
  FROM yourTable
  ORDER BY id;

这是 MSSQL 2008 方法。

SELECT row_number() over (order by (select null)) AS Pos, Header,Mo,RefId
FROM Table1
WHERE RefId =5