C#やASP.NETをはじめとするプログラミング技術日記を綴っていきます。
Categories
Archives
メールマガジン
【SQLServer】N件目からM件目のレコードを取得する
SELECT
*
FROM
(
SELECT
ROW_NUMBER() OVER(ORDER BY OrderID, ProductID) AS ROWNUM,
*
FROM
"Order Details Extended"
) A
WHERE
ROWNUM BETWEEN 11 AND 20
ORDER BY
OrderID,
ProductID
;
SQLは簡潔明瞭ですが、サブクエリで全件返しているので、効率が良くないかもしれません。
SELECT TOP 10
*
FROM
"Order Details Extended" A
WHERE
NOT EXISTS (
SELECT
*
FROM
(
SELECT TOP 10
*
FROM
"Order Details Extended"
) B
WHERE
A.OrderID = B.OrderID
AND A.ProductID = B.ProductID
)
ORDER BY
OrderID,
ProductID
;
NOT EXISTSを使っているので、少し分かりにくいかと思いますが、要約すると、
先頭10件を除いた集合の中から、さらに先頭の10件を返す
ということになります。
このエントリーのトラックバックURL:
http://magicbox.sakura.ne.jp/mt/mt-tb.cgi/562