如何获取Select的rowposition

时间:2015-02-11 14:40:51

标签: sql sql-server-2008 select row

嗨我的表看起来像

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

如果我选择所有记录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

2 个答案:

答案 0 :(得分:1)

由于您未指定任何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;

答案 1 :(得分:1)

这是MSSQL 2008的方法。

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