記事内に広告が含まれています。

【Oracle】SELECTで上から10件のデータを取得する

Oracleにおける、SELECTで上から10件のデータを取得する方法です。

【スポンサーリンク】

SELECTで上から10件のデータを取得

SELECTで上から10件のデータを取得する方法です。とても簡単です。

--何でもいいから取り敢えず上から10件を取得
SELECT * FROM テーブル名 WHERE ROWNUM <= 10;

WHERE句に「ROWNUM <= 10」とすることで、上から10件のデータを取得することが可能です。10だろうが100だろうが1000だろうが、条件にする値は何でも良いです。

ただし、これはテーブルに登録されている順番で上から10件を取得しただけなので、意図した順番にソートする必要があります。

ROWNUM は疑似列と言って、行を選択する順序を示す番号のことです。実際の、取得元テーブルの物理的なカラムとは別のものとなります。

なので、意図した順番で上から10件を取得する場合、サブクエリ内で先にソートする必要があります。

--ソート後に上から10件を取得
SELECT * 
  FROM (SELECT * 
          FROM テーブル名
         WHERE 条件          --★省略可能
         ORDER BY カラム名)  --★先にサブクエリでソートしてしまおう(昇順降順どちらでもOK)
WHERE ROWNUM <= 10;

サブクエリ内で先にソートしないと、テーブルに登録されている順番に上から10件を取得してしまうので、注意してください。

【スポンサーリンク】

サンプル(実行例)

というわけで、サンプル実行してみます。テストデータは以下。

--都道府県テーブル
CREATE TABLE prefectures (
    prefecture_code VARCHAR2(2),  --都道府県コード
    prefecture_name VARCHAR2(20), --都道府県名
    area NUMBER                   --面積
);

INSERT ALL
INTO prefectures VALUES ('01', '北海道', 83424.65)
INTO prefectures VALUES ('02', '青森県', 9645.57)
INTO prefectures VALUES ('03', '岩手県', 15275.01)
INTO prefectures VALUES ('04', '宮城県', 7285.52)
INTO prefectures VALUES ('05', '秋田県', 11637.55)
INTO prefectures VALUES ('06', '山形県', 9323.15)
INTO prefectures VALUES ('07', '福島県', 13782.75)
INTO prefectures VALUES ('08', '茨城県', 6095.41)
INTO prefectures VALUES ('09', '栃木県', 6408.28)
INTO prefectures VALUES ('10', '群馬県', 6362.28)
INTO prefectures VALUES ('11', '埼玉県', 3797.75)
INTO prefectures VALUES ('12', '千葉県', 5156.64)
INTO prefectures VALUES ('13', '東京都', 2190.93)
INTO prefectures VALUES ('14', '神奈川県', 2415.83)
INTO prefectures VALUES ('15', '新潟県', 12584.10)
SELECT * FROM dual;

ここから、普通に上から10件を取得すると、上記のINSERT文の順番(prefecture_codeの順番)に結果が返って来ます。

なので、面積の大きい順に上から10件を取得します。サンプルクエリはこちら。

SELECT * 
  FROM (SELECT * 
          FROM prefectures
         ORDER BY area DESC)
 WHERE ROWNUM <= 10;

では実行してみます。

面積が大きい順で上から10件を取得できていますね。

【スポンサーリンク】

参考リンク

ROWNUM疑似列
『Oracle Database PL/SQL言語リファレンス』のこのリリースの変更点
【スポンサーリンク】

関連記事

【Oracle】ORDER BYを使った並び替え(昇順・降順のソート)
OracleのORDER BYを使った並び替えです。

SQL Serverで上から10件を取得したい場合はコチラ↓

【SQL Server】SELECTで上から10件のデータを取得する
SQL Server における、SELECTで上から10件のデータを取得する方法です。