SQLで先頭から上位10件のレコードを取得する方法(Oracle、SQL Server、MySQL、PostgreSQL)

「先頭からn件のレコード(結果セット)だけ取得する方法が知りたい。」というのは、データベース関連のメーリングなどで以前からよくある質問ですが、RDBの種類やバージョンによって利用可能な方法がそれぞれ異なるので簡単にまとめてみました。

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件の結果セットを取得することができます。

Microsoft SQL Server 7.0 以降
Microsoft SQL Server 7.0 以降 では TOP が使用できるようになったので、

SELECT TOP 10 *
FROM Table1
ORDER BY Field1

と記述することによって、同様に先頭から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;

達人に学ぶ SQL徹底指南書 (CodeZine BOOKS)
翔泳社 著者:ミック 価格:2,520円 評価:★★★★★


  • SQL中級者以上向けの高度なテクニック集 ★★★
  • SQL扱う人は必読の名著 ★★★★★
  • いい本だと思います ★★★★
  • CASE, HAVING, EXIST! ★★★★
  • どちらかと言えば、サンプルコードの参考書 ★★★★

powered by amalink
[148] Posted by kagahiro at 2005/03/21 16:34:00
オープン | 0 point | Link (11) | Trackback (0) | Comment (0)

キーワード
SQL 先頭 10件 Oracle 上位 レコード MySQL PostgreSQL 

kagahiroのホームページ

追記

MySQL、PostgreSQLで先頭から上位10件のレコードを取得する方法
MySQLの場合

SELECT * FROM Table1
ORDER BY Field1
LIMIT 0, 10;

PostgreSQLの場合

SELECT * FROM Table1
ORDER BY Field1
OFFSET 0 LIMIT 10;

Posted by kagahiro at 2010/06/29 17:49:30

関連リンク

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公式サイト。製品情報、技術情報、サービスパック・評価版...

トラックバック

トラックバックURL :


SQLで先頭から上位10件のレコードを取得する方法(Oracle、SQL Server、MySQL、PostgreSQL)へのコメント


詳細の入力フィールドを表示する

おすすめ  (チェックしてコメントすると最新情報に掲載)
コメント :

< 前の投稿      次の投稿 >