查询输出中的行号

时间:2009-12-11 10:35:59

标签: sql sql-server-2000 row-number

我在表格中有一个数字字段(比如num)和pkey。

select * from mytable order by num

现在我怎么能在我有pkey的特定行的查询输出中得到行no。

我正在使用sql 2000。

3 个答案:

答案 0 :(得分:2)

听起来你想要为每条记录返回一个行号。

在SQL 2000中,您可以执行以下操作:

SELECT (SELECT COUNT(*) FROM MyTable t2 WHERE t2.num <= t.num) AS RowNo, *
FROM MyTable t
ORDER BY num

假设num是唯一的。如果不是,那么你必须使用PK字段并按顺序排序。

或者,使用临时表(或表变量):

CREATE TABLE #Results
(
RowNo INTEGER IDENTITY(1,1),
MyField VARCHAR(10)
)

INSERT #Results
SELECT MyField
FROM MyTable 
ORDER BY uum

SELECT * FROM #Results

DROP TABLE #Results

在SQL 2005中,您可以使用ROW_NUMBER()函数,这会让生活变得更轻松。

答案 1 :(得分:0)

因为我理解你的问题,你想获得所有返回的行数,对吧? 如果是这样,请使用@@rowcount

答案 2 :(得分:0)

正如Ada指出的那样,这个任务在SQL Server 2005中变得容易多了....

SELECT whatever, RowNumber from (
     SELECT pk
           , whatever
          , ROW_NUMBER() OVER(ORDER BY num) AS 'RowNumber'
    FROM mytable
)
WHERE pk = 23;