SQL TOP、LIMIT、FETCH FIRSTまたはROWNUM句
SQL SELECT TOP句
SELECT TOP
句を使用して、返すレコードの数を指定します。
SELECT TOP
句は、数千のレコードを持つ大きなテーブルで役立ちます。多数のレコードを返すと、パフォーマンスに影響を与える可能性があります。
注:すべてのデータベース システムが SELECT TOP
句をサポートしているわけではありません。
MySQL は、限られた数のレコードを選択するための LIMIT
句をサポートしていますが、Oracle
はFETCH FIRST n ROWS ONLY
およびROWNUM
を使用します。
SQL Server/MS Access構文
SELECT TOP <em>number</em>|<em>percent</em> <em>column_name(s)</em>
FROM <em>table_name
</em>WHERE <em>condition</em>;
MySQL構文
SELECT <em>column_name(s)</em>
FROM <em>table_name
</em>WHERE <em>condition</em>
LIMIT <em>number</em>;
Oracle 12構文
SELECT <em>column_name(s)</em>
FROM <em>table_name
</em>ORDER BY <em> column_name(s)</em>
FETCH FIRST <em>number</em> ROWS ONLY;
古いOracle構文
SELECT <em>column_name(s)</em>
FROM <em>table_name</em>
WHERE ROWNUM <= <em>number</em>;
古いOracle構文(ORDER BYを使用)
SELECT *
FROM (SELECT <em>column_name(s) </em>FROM <em>table_name</em> ORDER BY <em>column_name(s)</em>)
WHERE ROWNUM <= <em>number</em>;
デモデータベース
以下は、Northwindサンプルデータベースの"Customers"テーブルからの選択です。
顧客ID |
顧客名 |
連絡先 |
住所 |
街 |
郵便番号 |
国 |
---|---|---|---|---|---|---|
1 |
アルフレッド・フッターキステ | マリア・アンダース | オベレ通り57 | ベルリン | 12209 | ドイツ |
2 | アナ・トルヒーヨ サンドイッチとアイスクリーム | アナ・トルヒーヨ | コンスティトゥシオン通り2222番地 | メキシコDF | 05021 | メキシコ |
3 | アントニオ・モレノ・タケリア | アンソニー・モレノ | マタデロス 2312 | メキシコDF | 05023 | メキシコ |
4 |
アラウンドホーン | トーマス・ハーディ | 120 ハノーバー スクエア | ロンドン | WA1 1DP | イギリス |
5 | バーグルンドのスーパーマーケット | クリスティーナ・ベルグルンド | ベルグヴスヴェーゲン8 | ルレオ | S-958 22 | スウェーデン |
SQL TOP、LIMIT、およびFETCH FIRSTの例
次のSQLステートメントは、"Customers"テーブル(SQL Server/MS Accessの場合)から最初の3つのレコードを選択します。
次のSQLステートメントは、MySQLの同等の例を示しています。
次のSQLステートメントは、Oracleの同等の例を示しています。
例
SELECT * FROM Customers
FETCH FIRST 3 ROWS ONLY;
SQL TOP PERCENTの例
次のSQLステートメントは、"Customers"テーブル(SQL Server/MS Accessの場合)からレコードの最初の50%を選択します。
次のSQLステートメントは、Oracleの同等の例を示しています。
例
SELECT * FROM Customers
FETCH FIRST 50 PERCENT ROWS ONLY;
WHERE句を追加する
次のSQLステートメントは、国が "Germany" (SQL Server/MS Accessの場合)である "Customers" テーブルから最初の3つのレコードを選択します。
次のSQLステートメントは、MySQLの同等の例を示しています。
次のSQLステートメントは、Oracleの同等の例を示しています。
例
SELECT * FROM Customers
WHERE Country='Germany'
FETCH FIRST 3 ROWS ONLY;
プログラミング学習を加速させる
プログラミングをプロの講師に教えてもらいませんか。