[date:20050321]の検索結果
SQLのSELECT文を使用して先頭からn件のレコードを取得するだけでなく、n件目からm件目までのレコードを取得することも可能です。
Oracle8i R8.1.5 以降
Oracle8i R8.1.5 以降では、Table1のField1の昇順に11件目から15件目までの結果セットを取得する場合は以下のSQL文で取得できます。
SELECT *
FROM (SELECT *, ROWNUM SEQNUM
FROM (SELECT * FROM Table1 ORDER BY Field1) A) B
WHERE SEQNUM > 10 AND SEQNUM <= 15;
Microsoft SQL Server 7.0 以降
Microsoft SQL Server 7.0 以降ではTOPを使用して、以下のSQL文で Table1の11件目から15件目までの結果セットを取得できます。
SELECT TOP 5 * FROM Table1 A
WHERE NOT EXISTS
(SELECT * FROM (SELECT TOP 10 * FROM Table1) AS B
WHERE A.Field1 = B.Field1)
ORDER BY A.Field1
その他のRDB
また、上記以外のRDBでも以下のSQL文で同様の結果が得られます。
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 AND COUNT(*) <= 15

Oracle8i R8.1.5 以降
Oracle8i R8.1.5 以降では、Table1のField1の昇順に11件目から15件目までの結果セットを取得する場合は以下のSQL文で取得できます。
SELECT *
FROM (SELECT *, ROWNUM SEQNUM
FROM (SELECT * FROM Table1 ORDER BY Field1) A) B
WHERE SEQNUM > 10 AND SEQNUM <= 15;
Microsoft SQL Server 7.0 以降
Microsoft SQL Server 7.0 以降ではTOPを使用して、以下のSQL文で Table1の11件目から15件目までの結果セットを取得できます。
SELECT TOP 5 * FROM Table1 A
WHERE NOT EXISTS
(SELECT * FROM (SELECT TOP 10 * FROM Table1) AS B
WHERE A.Field1 = B.Field1)
ORDER BY A.Field1
その他のRDB
また、上記以外のRDBでも以下のSQL文で同様の結果が得られます。
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 AND COUNT(*) <= 15
(追記あり)
「先頭から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;
(追記あり)
レンタルサーバー上でPerlのモジュールを利用したCGIを使用するためには、CGIを実行するレンタルサーバーでどのようなモジュールが利用できるかを調べておく必要があります。
Perlがモジュールを探索するディレクトリの一覧は、@INCという配列に入ってるので、この配列の中のディレクトリを表示することで、どんなモジュールが利用可能か知ることができます。
下記のCGIスクリプトは@INCのディレクトリの一覧を表示します。
#!/usr/bin/perl
print "Content-Type: text/html\n\n";
print "Perl Module Search \n";
print "\n";
print "
\n";
foreach $dir (@INC) {
print "$dir
\n";
$dir .= "/*";
@files = <${dir}>;
foreach $mdl (@files) {
print "$mdl
\n";
}
}
print "
\n";
print "\n";
exit;
Perlがモジュールを探索するディレクトリの一覧は、@INCという配列に入ってるので、この配列の中のディレクトリを表示することで、どんなモジュールが利用可能か知ることができます。
下記のCGIスクリプトは@INCのディレクトリの一覧を表示します。
#!/usr/bin/perl
print "Content-Type: text/html\n\n";
print "
print "\n";
print "
\n";
foreach $dir (@INC) {
print "$dir
\n";
$dir .= "/*";
@files = <${dir}>;
foreach $mdl (@files) {
print "$mdl
\n";
}
}
print "
\n";
print "\n";
exit;
レンタルサーバーで自作またはネットなどで配布されているCGIを動かすためには、利用するレンタルサーバーでどのような環境変数が利用できるかを調べる必要があります。以下のPerlスクリプトは使いたいCGIを実行する...
プロフェッショナルの条件―いかに成果をあげ、成長するか今や唯一の意味ある競争力要因は、知識労働の生産性であり、それを左右するのが知識労働者である。自分の能力を見極め、伸ばすための簡単な方法を著者自らの...
C++は広く普及しているプログラミング言語であるC言語にオブジェクト指向的な拡張を施したプログラミング言語で、クラスや標準ライブラリである、STL(標準テンプレートライブラリ)を利用することで効率的にプログラム...
1
アクセスランキング
今日のアクセスランキング TOP 10
- SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (42 PV)
- 有力将棋系ユーチューバーのショウヤンさんが将棋ウォーズで「ソフト指し」を告白し衝撃走る (12 PV)
- Google Finance(グーグルファイナンス)- リアルタイム株価情報、金融ニュース、日本株 (6 PV)
- 完全無料のMT4向けナンピンEA「Nanpin K(ナンピンケイ)」をバージョンアップ(Ver 2.04) (6 PV)
- Google News (グーグルニュース)日本版 (5 PV)
- SQLのSELECT文でn件目からm件目までのレコードを取得する方法(Oracle、SQL Server、MySQL、PostgreSQL) (4 PV)
- MySQLのINSERT ... SELECT文でLIMIT句を使用して上位3件のレコードをテーブルに追加する (4 PV)
- ガンマトレード(ガンマプレイ)とは #FX #用語解説 #オプション取引 (4 PV)
- スキャルピングならスプレッドが狭くキャッシュバックサイトも利用できるExnessがおすすめ (3 PV)
- MySQLのUPDATE文でLIMIT句を使用して上位3件のレコードを更新する (3 PV)
今月のアクセスランキング TOP 10
- SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (362 PV)
- 完全無料のMT4向けナンピンEA「Nanpin K(ナンピンケイ)」をバージョンアップ(Ver 2.04) (82 PV)
- 2chまとめサイト - 痛いニュース(ノ∀`) (79 PV)
- MySQLのINSERT ... SELECT文でLIMIT句を使用して上位3件のレコードをテーブルに追加する (64 PV)
- Google Finance(グーグルファイナンス)- リアルタイム株価情報、金融ニュース、日本株 (60 PV)
- MT4向け無料ヘッジ(両建て)ツール(EA)「STOPPER FREE」 #自動売買 #FX (37 PV)
- Google News (グーグルニュース)日本版 (28 PV)
- ガンマトレード(ガンマプレイ)とは #FX #用語解説 #オプション取引 (23 PV)
- 有力将棋系ユーチューバーのショウヤンさんが将棋ウォーズで「ソフト指し」を告白し衝撃走る (21 PV)
- 安全性重視の完全無料ナンピンマーチンEA「Million Dollar(ミリオンダラー)」 #FX #ゴールド #ビットコイン (20 PV)
アクセス統計
ディレクトリ
関連サイト