0

pkey と一緒にテーブルに数値フィールド (num など) があります。

select * from mytable order by num

pkey を持っている特定の行のクエリ出力で行番号を取得する方法を教えてください。

私はSQL2000を使用しています。

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 フィールドを使用して並べ替える必要があります。

または、一時テーブル (またはテーブル 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() 関数があり、これを使用すると作業が大幅に楽になります。

于 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 に答える