如何在不支持ROW_NUMBER()
函数的SQL Server 2000中获取SQL查询中的行号?
如何在不支持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
您能详细说明一下以下查询如何解决问题吗?
SELECT ( SELECT SUM(1)
FROM specimen_source_ref
WHERE specimen_source_rcd <= reg.specimen_source_rcd
) AS '行号'
,*
FROM specimen_source_ref reg