|
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)
[148] Posted by kagahiro at 2005/03/21 16:34:00
オープン | 0 point | Link (11) | Trackback (0) | Comment (0) キーワード SQL 先頭 10件 Oracle 上位 レコード MySQL PostgreSQL
追記
関連リンク
トラックバックトラックバックURL : SQLで先頭から上位10件のレコードを取得する方法(Oracle、SQL Server、MySQL、PostgreSQL)へのコメント |
|||||||||||||||||||||||||||||||||||||||||||||||||||



