[id:148]の検索結果
「先頭から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;
(追記あり)
1
アクセスランキング
今日のアクセスランキング TOP 10
- [Perl][MySQL]INSERT文でシングルクオートを含んだレコードを追加するには (1 PV)
- アフィリエイト 書籍 (1 PV)
- 無料レンタル掲示板 (1 PV)
- mixiアプリモバイル (1 PV)
- クリエイティブ・コモンズ (1 PV)
- 「UnitSearch Ver.2.0」 SEM Analytics Lab (1 PV)
- ソフト開発者が作った飛行機には乗れない? (1 PV)
- 今日(2020年5月27日、水曜日)の為替相場予想 #ドル円 #ユーロドル #ポンドドル #FX #デイトレード (1 PV)
- 赤い「iPod nano」 (1 PV)
- 「メモる」を1.1にバージョンアップ (1 PV)
今月のアクセスランキング TOP 10
- SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (44 PV)
- 2NN 2ちゃんねるニュース速報+ナビ (37 PV)
- 仲値トレードが簡単にできる無料EA「NAKANE3」 #MT4 (21 PV)
- 裁量トレードを半自動化する無料のMT5向け裁量トレード支援ツール(裁量補助EA)「PositionKeeper MT5」 #FX (14 PV)
- FC2まとめ (13 PV)
- Google Finance(グーグルファイナンス)- リアルタイム株価情報、金融ニュース、日本株 (13 PV)
- Google News (グーグルニュース)日本版 (12 PV)
- 爆益を狙うハイリスクハイリターンのナンピンマーチンEA「Hyper Dollar MT5」 (10 PV)
- Google Maps(グーグルマップ)日本版 - 地図検索、ルート検索 (10 PV)
- MT4向け1ポジブレイクアウトEA「HEADLINE」オープンソースライセンス(GPL3)で公開 #USDJPY (10 PV)
アクセス統計
ディレクトリ
関連サイト