0

SQL Server テーブルのレコード セットを選択したい。

SQL Server では、次のことができます。

select TOP 40,60 * 
from sometable
order by name

40行目から60行目を取得したいです。

ありがとうございました。

4

4 に答える 4

0

LIMIT は Oracle に存在しますが、引数が異なります。最初の引数は返す最初の行のオフセットを指定し、2 番目の引数は返す行の最大数を指定します。最初の行のオフセットは 0 (1 ではない) です。

SELECT * FROM sometbl Order by name LIMIT 40,100;  # Retrieve rows 41-100

または、次のように続行できます。

SELECT * FROM
(
   SELECT st.*, Row_Number() OVER (ORDER BY name) rn FROM sometable st
) 
WHERE rn BETWEEN 40 AND 60;
于 2013-11-07T05:38:30.407 に答える
0

私はこのクエリのようにそれをしました

WITH temp AS
( SELECT *,    ROW_NUMBER() OVER (ORDER BY name) AS 'RowNumber'
   FROM sometable 
) 
SELECT * FROM temp WHERE RowNumber BETWEEN 40 AND 60

コメントありがとうございます。

于 2013-11-07T06:40:21.813 に答える
0

関数を使用Row_numberして、必要な行を取得します

WITH tmp AS  
    (SELECT *, ROW_NUMBER() OVER (ORDER BY a.name) AS 'rn', a.* FROM table a)
    SELECT * FROM tmp WHERE rn BETWEEN 40 AND 60
于 2013-11-07T05:41:04.547 に答える