嗨我的表看起来像
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
答案 0 :(得分:1)
由于您未指定任何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;
答案 1 :(得分:1)
这是MSSQL 2008的方法。
SELECT row_number() over (order by (select null)) AS Pos, Header,Mo,RefId
FROM Table1
WHERE RefId =5