あにやんのカフェ

アクセスカウンタ

zoom RSS ORDER BY ROWNUM

<<   作成日時 : 2013/07/26 06:57   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

ORDER BY と ROWNUM=1 を組み合わせれば、
最大値(最小値)持つときのレコードを簡単に取り出せると思ったのだけど・・・
違ってた。

SELECT
*
FROM
TABLE1
WHERE
ORDER BY COL1
ROWNUM = 1

最初に検索を実行したときにRWONUMが付与され、
その後に並べ替えがおこなわれるらしい。

この「ROWNUM = 1」が WHERE句にかかり、検索結果に対して
先に1件(N件)取り出されるということのようです。

ROWNUMは、検索の実行時にOracleの内部的で一時的に付加されるカラムのようです。
検索結果が複数想定されるときに、1件(N件)だけ取り出したいときに指定します。


さて、正解の発表です。

最大値(最小値)を含む行を取り出す正しい方法はこちらです。

SELECT
*
FROM
(
SELECT *
FROM TABLE1
WHERE
ORDER BY COL1
)
WHERE
ROWNUM = 1

先に順序のついたインラインビューを定義しておいて、そこから1番目を取り出すわけですね。

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ
SEO対策済みテンプレート
ORDER BY ROWNUM あにやんのカフェ/BIGLOBEウェブリブログ
文字サイズ:       閉じる