查询输出中的行号

发布于 2024-08-15 02:05:03 字数 157 浏览 8 评论 0原文

我在表中有一个数字字段(例如 num)以及 pkey。

select * from mytable order by num

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

我使用的是sql 2000。

I have a numeric field (say num) in table along with pkey.

select * from mytable order by num

now how I can get the row no in query output of a particular row for which I have pkey.

I'm using sql 2000.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

优雅的叶子 2024-08-22 02:05:03

听起来您想为返回的每条记录提供一个行号。

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

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

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

或者,使用临时表(或表 var):

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

Sounds like you want a row number for each record returned.

In SQL 2000, you can either do this:

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

which assumes num is unique. If it's not, then you'd have to use the PK field and order by that.

Or, use a temp table (or table var):

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

In SQL 2005, there is a ROW_NUMBER() function you could use which makes life a lot easier.

绮烟 2024-08-22 02:05:03

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

as i understand your question you want to get the number of all rows returned, right?
if so use @@rowcount

莫相离 2024-08-22 02:05:03

正如 Ada 指出的那样,这项任务在 SQL Server 2005 中变得更加容易......

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

As Ada points out, this task became a lot easier in SQL Server 2005....

SELECT whatever, RowNumber from (
     SELECT pk
           , whatever
          , ROW_NUMBER() OVER(ORDER BY num) AS 'RowNumber'
    FROM mytable
)
WHERE pk = 23;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文