2009年9月25日金曜日

[SQL]n番目のレコード取得

SQLでソート後、n番目(この場合2番)を取得する方法を考えてみました。
コードはこんな感じ。


-- 分析関数で取得
SELECT * FROM (
SELECT *, Row_Number() OVER(ORDER BY p_key DESC) as RNK FROM tblTEST) T1
WHERE RNK=2

--ガッツで取得
SELECT top 1 * FROM tblTEST t1
WHERE t1.p_key<(SELECT MAX(p_key) FROM tblTEST)
ORDER BY p_key DESC


とりあえず、両方とも2番目が取れるものの、ガッツで取得のほうは、可読性も悪く、TotalSubtreeCostの結果もこのようになりました。

  • 集計関数→0.003934295
  • ガッツで取得→0.00657168

集計関数。。。覚えると便利そうですね。

0 件のコメント :