テーブルのデータ取得で、何かの条件で先頭のデータのみ必要な時があります。
こんな時、MySQLであればLIMIT句で LIMIT 1 とSELECT文の最後に記述すれば可能ですが、
Oracleの場合ではこの様な機能はありません。
OracleではSELECTの結果の行番号を返す ROWNUM という擬似列があります。 この擬似列を利用することで、LIMITと似た感じにできます。先ずは以下の例で、ROWNUM の値を表示してみます。 内側のUNIONで連結されたSELECT文の羅列は、'0010', '0001', '0020', '0030'の CODE を出力し、 その結果をソートする様になっています。 通常この部分は、実際のテーブルを検索するSELECT文を記述します。
検索結果は CODE と ROWNUM が表示されますが、ROWNUM は1からの連番となります。
そこでこの ROWNUM を外側のSELECT文のWHERE句の条件に使えば、目的とする結果が得られます。 上のSQL文から分かるように ROWNUM = 1 の条件を付けることで、 先頭のデータを取得することができます。
■関連ページ
⇒SELECT文に関する基礎的なこと
⇒SELECT文に関する基礎的なこと2
⇒副問い合わせを含むSELECT文について
⇒集合演算子を使ったSELECT文について
⇒CASE式を使ったSELECT文について
達人に学ぶDB設計 徹底指南書 初級者で終わりたくないあなたへ
OracleではSELECTの結果の行番号を返す ROWNUM という擬似列があります。 この擬似列を利用することで、LIMITと似た感じにできます。先ずは以下の例で、ROWNUM の値を表示してみます。 内側のUNIONで連結されたSELECT文の羅列は、'0010', '0001', '0020', '0030'の CODE を出力し、 その結果をソートする様になっています。 通常この部分は、実際のテーブルを検索するSELECT文を記述します。
検索結果は CODE と ROWNUM が表示されますが、ROWNUM は1からの連番となります。
そこでこの ROWNUM を外側のSELECT文のWHERE句の条件に使えば、目的とする結果が得られます。 上のSQL文から分かるように ROWNUM = 1 の条件を付けることで、 先頭のデータを取得することができます。
■関連ページ
⇒SELECT文に関する基礎的なこと
⇒SELECT文に関する基礎的なこと2
⇒副問い合わせを含むSELECT文について
⇒集合演算子を使ったSELECT文について
⇒CASE式を使ったSELECT文について
達人に学ぶDB設計 徹底指南書 初級者で終わりたくないあなたへ