SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL)
「先頭からn件のレコード(結果セット)だけ取得する方法が知りたい。」というのは、データベース関連のメーリングなどで以前からよくある質問ですが、SQL ServerやOracle、MySQL、PostgreSQLなどRDBやバージョンによって利用可能な方法がそれぞれ異なるので簡単にまとめてみました。
Microsoft SQL Server 7.0 以降
Microsoft SQL Server 7.0 以降 では TOP が使用できるので、
SELECT TOP 10 *
FROM Table1
ORDER BY Field1
と記述することによって、先頭から上位10件の結果セットを取得することができます。
Oracle8i R8.1.5 以降
Oracle8i R8.1.5 以降ではサブクエリー内で ORDER BY が使用できるようになったので、例えば Field1 の昇順に上位10件を取得するような場合は、
SELECT *
FROM (SELECT * FROM Table1 ORDER BY Field1) A
WHERE ROWNUM <= 10;
と記述することによって、先頭から10件の結果セットを取得することができます。
MySQL
MySQLの場合は以下のようにLIMIT句を使用することで、指定した位置(先頭からの場合は0)から指定した件数のレコードを取得することができます。
SELECT * FROM Table1
ORDER BY Field1
LIMIT 0, 10;
PostgreSQL
PostgreSQLの場合は以下のようにLIMITとOFFSETを指定することで、
OFFSETで指定した位置から、LIMIT数分のレコードを取得することができます。
SELECT * FROM Table1
ORDER BY Field1
OFFSET 0 LIMIT 10;
その他のRDB
また、不運にも上記以外の RDB を使用しなければならない場合でも、以下のようなSQL文で、Table1 から Field1 の昇順に Field1, Field2, Field3 の結果セットを先頭から10件取得することができます。
SELECT DISTINCT COUNT(*), A.Field1, A.Field2, A.Field3 FROM Table1 A, Table1 B
WHERE (A.Field1 >= B.Field1)
GROUP BY A.Field1, A.Field2, A.Field3
HAVING COUNT(*) <= 10;
[148] Posted by kagahiro at 2005/03/21 16:34:00
クローズ | 5 point | Link (18) | Trackback (1) | Comment (4)
クローズ | 5 point | Link (18) | Trackback (1) | Comment (4)
キーワード
SQL 先頭 10件 Oracle 上位 レコード MySQL PostgreSQL TOP
追記
SQLプログラミング質問スレ | |
実際の業務システムの開発では、単に先頭からN件のレコードを取得できれば良いと言うことは少ないと思います。具体的な記述方法がわからないときは、SQLプログラミング質問スレで質問してみてください。 | |
Posted by kagahiro at 2017/03/30 09:52:08 |
SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) 関連リンク
SQLでn件目からm件目までのレコードを取得する方法(Oracle、SQL Server、MySQL、PostgreSQL) | |
SQLを使用して先頭からn件のレコードを取得するだけでなく、n件目からm件目までのレコードを取得することも可能です。Oracle8i R8.1.5 以降Oracle8i R8.1.5 以降では... |
SQL | |
Structured Query Language(構造化問合せ言語) のことで、データベースの定義や操作などを実現するためのデータベース言語の一つ... |
Oracle(オラクル) | |
Oracle(オラクル)とは、米Oracle社が開発・販売している高機能データベース製品のことで、UNIX、Linux、Windowsなお各OS向けの製品が存在... |
Oracle(オラクル)書籍 | |
Oracle(オラクル)に関する書籍。Oracleの入門書、データベースのアーキテクチャから運用・管理、データベース設計、PL/SQL、プログラミングについての解説書... |
プログラマのためのSQL 第2版 ジョー・セルコ著 | |
SQLの実務経験のあるプログラマを対象として、トピックごとにSQLプログラミングの基本的な考え方から、データベースの設計、数値・文字・時間といったデータ型、DELETE・INSERT・UPDATEといったデーブル操作、SELECT... |
SQL 書籍 | |
リレーショナルデータベースの標準言語であるSQLに関する入門書やリファレンス、プログラミング解説書などの書籍。SQLプログラミング入門―12のレッスンで学ぶリレーショナル... |
MySQL | |
MySQLとは、フィンランドのMichael Widenius氏よって開発された、オープンソースライセンスで配布されている高速性に重点を絞った軽快なRDBMSで、欧米などで広く普及している。... |
MySQL 書籍 | |
オープンソースの高速・軽量データベース「MySQL」に関する書籍。入門書や運用管理についての詳細な解説書、リファレンスなど。MySQL 徹底入門 第2版オープンソースのデータベース... |
[Perl]DBI経由でMySQLに接続して、SELECT文でデータを取得するサンプルプログラム | |
PerlのプログラムからDBI経由でMySQLに接続し、SELECT文でデータを取得する処理のサンプルプログラムです。あらかじめphpMyAdminを使用してMySQLにテータベース「testdb」を作成し、以下のSQL... |
PostgreSQL | |
PostgreSQLとは、オープンソースの本格的なリレーショナルデータベースで、問い合わせ言語としてSQLが使えるほか、トランザクション、行レベルロック、副問い合わせなどの重要な機能も... |
SQL Server | |
SQL Serverとは、Microsoft社がWindows Server用に開発・販売しているRDBMSのこと。Microsoft SQL Server ホームマイクソフトのSQL Server公式サイト。製品情報、技術情報、サービスパック・評価版... |
SQLiteのSELECT文で上位 (TOP) n件のデータを取得する | |
SQLiteでは、AccessやMicrosoft SQL ServerのようにTOP句を使用して上位n件のデータを取得することはできません。SQLiteのSELECT文で上位n件のデータを取得する場合はLIMIT句を使用します。構文:SELECT カラム名, .... |
MySQLのDELETE文でLIMIT句を使用して上位3件のレコードを削除する | |
MySQLでは、DELETE文でLIMIT句とORDER BYを使用して上位n件のレコードを削除することができます。削除前にORDER BYで指定した方法で並べ替えられ(ASCは昇順、DESCは降順、省略した場合は昇順)、LIMIT句で指定した行... |
PL/SQL(ピーエル・エスキューエル) | |
PL/SQL(ピーエル・エスキューエル)は、Oracle社が同社のデータベース製品であるOracle Databaseを使用するために、SQL(データの操作や定義を行うためのデータベース言語)を独自に拡張したプログラミング言語で、変... |
T-SQL (Transact-SQL) | |
T-SQL (Transact-SQL) は、SybaseとMicrosoftがSQL Sserver用に、データの操作や定義を行うためのデータベース言語であるSQLに独自の拡張機能を追加したプログラミング言語で、制御フロー、局所変数、グローバル変数... |
MySQLのUPDATE文でLIMIT句を使用して上位3件のレコードを更新する | |
MySQLでは、UPDATEでLIMIT句とORDER BYを使用して上位n件のレコードを更新することができます。更新前にORDER BYで指定した方法で並べ替えられ(ASCは昇順、DESCは降順、省略した場合は昇順)、LIMIT句で指定した行数... |
MySQLのINSERT ... SELECT文でLIMIT句を使用して上位3件のレコードをテーブルに追加する | |
MySQLでは、INSERT ... SELECTを使用することで1つまたは複数のテーブルからレコードをテーブルに追加できます。また、SELECTでLIMIT句とORDER BYを使用して上位n件のレコードのみテーブルに追加することもできます。... |
SQL Server 2017 #Windows #Linux #Microsoft | |
SQL Server 2017は、2017年10月2日(米国時間)に正式リリースされた、マイクロソフトが開発・販売しているRDBMS「SQL Server」の最新版で、これまでもサポートされていた Windows Server だけでなく、LinuxとDocker... |
SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) トラックバック
トラックバックURL :
Linked from ネット掲示板 - ゴクBBS : SQLプログラミング質問スレ at 2017/03/30 09:53:45 | |
このスレでは「こういうことをやりたいんだけどSQLでどう書くの?」「こういうSQLを書いたんだけどうまく動きません><」といった質問を受け付けています。質問するときは使用するDBMSを必ず明記してください。質問... |
SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL)へのコメント
1 Posted by kagahiro at 2013/07/13 11:51:54 | |
上位n件のデータを取得するSQLでは、表(テーブル)の結合を使用することも多いと思われるので、結合時のパーフォマンスに関する情報を置いときます。 複数テーブル結合方法のパフォーマンスについて http://social.msdn.microsoft.com/Forums/en-US/1f364a38-1c0d-4754-bcd6-6d11c4b4e809 津島博士のパフォーマンス講座 第9回 良いSQLについて http://www.oracle.com/technetwork/jp/database/articles/tsushima/tsm09-1598259-ja.html 表の結合を極めるチューニング・テクニック (1/4) http://www.atmarkit.co.jp/ait/articles/0503/24/news107.html 表の結合を極めるチューニング・テクニック (2/4) http://www.atmarkit.co.jp/ait/articles/0503/24/news107_2.html 表の結合を極めるチューニング・テクニック (3/4) http://www.atmarkit.co.jp/ait/articles/0503/24/news107_3.html 表の結合を極めるチューニング・テクニック (4/4) http://www.atmarkit.co.jp/ait/articles/0503/24/news107_4.html |
2 Posted by 無名のブロガー at 2013/08/09 10:32:20 | |
No16860.SQLで件数を指定する方法 http://www.accessclub.jp/bbs2/0051/beginter16860.html ACCESS で件数指定する方法のSQLが載ってます。 |
3 Posted by 無名のブロガー at 2013/08/09 10:34:34 | |
ACCESSでは、TOPを使用する事で上位N番目までの結果を得る事ができます。 SQLビューで記述するか、「クエリプロパティ」の「トップ値」に値を設定します。 |
4 Posted by 無名のブロガー at 2013/12/26 16:38:14 | |
RDB毎の記述の差異がわかりやすい。 |
アクセスランキング
今日のアクセスランキング TOP 10
- 2chまとめサイト - 痛いニュース(ノ∀`) (6 PV)
- 仲値トレードが簡単にできる無料EA「NAKANE3 Ver 2.04」 #MT4 (3 PV)
- SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (3 PV)
- 無料の決済支援ツール「PositionKeeper」を使って楽々半自動スキャルピング #MT4 #MT5 (3 PV)
- SQLiteのSELECT文で上位 (TOP) n件のデータを取得する (2 PV)
- 裁量トレードを半自動化する無料のMT5向け裁量トレード支援ツール(裁量補助EA)「PositionKeeper MT5」 #FX (2 PV)
- [FX]裁量ポジションの自動トレールや時間決済ができるMT4向け無料ツール(EA)「PositionKeeper」をバージョンアップ (2 PV)
- 時間指定で仲値トレードも簡単にできる無料EA「NAKANE3 Ver 2.02」 (2 PV)
- 安全性重視の完全無料ナンピンマーチンEA「Million Dollar(ミリオンダラー)」 #FX #ゴールド #ビットコイン (2 PV)
- Google Finance(グーグルファイナンス)- リアルタイム株価情報、金融ニュース、日本株 (1 PV)
今月のアクセスランキング TOP 10
- SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (388 PV)
- 2chまとめサイト - 痛いニュース(ノ∀`) (137 PV)
- Google Finance(グーグルファイナンス)- リアルタイム株価情報、金融ニュース、日本株 (73 PV)
- 使用制限無し完全無料のMT4向けナンピンEA「Nanpin K(ナンピンケイ)」 (63 PV)
- 安全性重視の完全無料ナンピンマーチンEA「Million Dollar(ミリオンダラー)」 #FX #ゴールド #ビットコイン (54 PV)
- 日経平均株価(にっけいへいきんかぶか) (45 PV)
- 完全無料のMT5用ナンピンEA「Nanpin K(ナンピンケイ) MT5」 使用制限無し (42 PV)
- 自作のMT4向け無料EA(口座縛り無し、ブローカー縛り無し、使用期限無し)とゴゴジャン出品中の有料EAの一覧 #MT4 (40 PV)
- 仲値トレードが簡単にできる無料EA「NAKANE3 Ver 2.04」 #MT4 (40 PV)
- 時間指定で仲値トレードも簡単にできる無料EA「NAKANE3 Ver 2.02」 (35 PV)
アクセス統計
ディレクトリ
関連サイト