【发布时间】:2025-12-24 16:00:12
【问题描述】:
我在表格中有一个数字字段(比如 num)和 pkey。
select * from mytable order by num
现在我如何在我拥有 pkey 的特定行的查询输出中获取行号。
我正在使用 sql 2000。
【问题讨论】:
标签: sql sql-server-2000 row-number
我在表格中有一个数字字段(比如 num)和 pkey。
select * from mytable order by num
现在我如何在我拥有 pkey 的特定行的查询输出中获取行号。
我正在使用 sql 2000。
【问题讨论】:
标签: sql sql-server-2000 row-number
听起来您希望返回的每条记录都有一个行号。
在 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() 函数,它可以让生活变得更轻松。
【讨论】:
据我了解,您希望获得返回的所有行数,对吗? 如果是这样,请使用@@rowcount
【讨论】:
正如 Ada 指出的,这项任务在 SQL Server 2005 中变得容易得多......
SELECT whatever, RowNumber from (
SELECT pk
, whatever
, ROW_NUMBER() OVER(ORDER BY num) AS 'RowNumber'
FROM mytable
)
WHERE pk = 23;
【讨论】: