繁体   English   中英

如何获取 SQL Server 2000 查询中的当前行号?

[英]How to get the current row number in an SQL Server 2000 query?

如何使用不支持ROW_NUMBER()函数的 SQL Server 2000 在 SQL 查询中获取行号?

您始终可以尝试使用带有标识列的临时表

DECLARE @table TABLE(
        [id] INT IDENTITY(1,1),
        Val VARCHAR(10)
)

DECLARE @TableFrom TABLE(
        Val VARCHAR(10)
)
INSERT INTO @TableFrom (Val) SELECT 'A'
INSERT INTO @TableFrom (Val) SELECT 'B'
INSERT INTO @TableFrom (Val) SELECT 'C'
INSERT INTO @TableFrom (Val) SELECT 'D'

INSERT INTO @table (Val) SELECT * FROM @TableFrom ORDER BY Val DESC
SELECT * FROM @table

我在 Sql Server 2000 中看到的一些最好的分页使用了这种模式

DECLARE @PageStart INT,
        @PageEnd INT

SELECT  @PageStart = 51,
        @PageEnd = 100

SELECT  <TABLE>.*
FROM    (
            SELECT  TOP (@PageStart - 1)
                    <ID>
            FROM    (
                        SELECT  TOP (@PageEnd)
                                <ID>
                        FROM    TABLE
                        ORDER BY <ID> ASC
                    ) SUB
            ORDER BY SUB.<ID> DESC
        ) SUB INNER JOIN
        <TABLE> ON SUB.<ID> = <TABLE>.<ID>
ORDER BY SUB.<ID>

使用标识创建临时表的另一种方法:

SELECT Field1, Field2, IDENTITY(int, 1,1) AS MyID 
INTO #Temp 
FROM Table1

您不能在 Sql Server 2000 中使用 Row_Number() - 它是在 2005 年引入的。

如果您想使用 Row_Number 进行分页,以下是有关如何在 Sql 2000 中执行高效分页的一些想法:

另一种不使用 SQL 定义函数的方法如下:

SELECT 
(SELECT COUNT(1) + 1 FROM YourTable t2 WHERE t2.Id < t.Id) AS RowNumber
FROM YourTable t

这有点棘手,但似乎比其他人给你的选择更简单。

您能否详细说明以下查询将如何解决问题?

选择(选择总和(1)

来自样本来源_参考

哪里标本_源_rcd <= reg.specimen_source_rcd

) AS '行号'

,*

来自样本源引用 reg

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM