0

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

select * from mytable order by num

现在我如何在我有 pkey 的特定行的查询输出中获取行号。

我正在使用 sql 2000。

4

3 回答 3

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() 函数,它让生活变得更轻松。

于 2009-12-11T10:45:26.643 回答
0

据我了解您的问题,您想获得返回的所有行数,对吗?如果是这样,请使用@@rowcount

于 2009-12-11T10:38:01.873 回答
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;
于 2009-12-11T10:46:26.740 回答