我如何获得 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
,这里您可以如何使用 Oracle
或 MSSql
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
嗨,我的 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
,这里您可以如何使用 Oracle
或 MSSql
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