[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

SQLパズル 第2版 プログラミングが変わる書き方/考え方
翔泳社 著者:ジョー・セルコ,Joe Celko 価格:2,940円 評価:★★★★★


  • SQLの名著 ★★★★★
  • 待望の新版です ★★★★★

powered by amalink
(追記あり)
[149] Posted by kagahiro at 2005/03/21 16:41:09
1 point | Link (11) | Trackback (1) | Comment (0)


「先頭から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;

プログラマのためのSQL 第4版
翔泳社 著者:ジョー・セルコ,Joe Celko


amazon.co.jpのカスタマーレビューを見る
powered by amalink


(追記あり)
[148] Posted by kagahiro at 2005/03/21 16:34:00
5 point | Link (18) | Trackback (1) | Comment (4)

レンタルサーバー上で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;
[146] Posted by kagahiro at 2005/03/21 16:16:11
0 point | Link (4) | Trackback (0) | Comment (0)

レンタルサーバーで自作またはネットなどで配布されているCGIを動かすためには、利用するレンタルサーバーでどのような環境変数が利用できるかを調べる必要があります。以下のPerlスクリプトは使いたいCGIを実行する...
[145] Posted by kagahiro at 2005/03/21 16:11:53
0 point | Link (4) | Trackback (0) | Comment (0)

プロフェッショナルの条件―いかに成果をあげ、成長するか今や唯一の意味ある競争力要因は、知識労働の生産性であり、それを左右するのが知識労働者である。自分の能力を見極め、伸ばすための簡単な方法を著者自らの...
[137] Posted by kagahiro at 2005/03/21 14:49:33
0 point | Link (1) | Trackback (0) | Comment (0)

 

A C++

C++は広く普及しているプログラミング言語であるC言語にオブジェクト指向的な拡張を施したプログラミング言語で、クラスや標準ライブラリである、STL(標準テンプレートライブラリ)を利用することで効率的にプログラム...
[126] Posted by kagahiro at 2005/03/21 15:21:20
0 point | Link (5) | Trackback (0) | Comment (0)

  1  


アクセスランキング

今日のアクセスランキング TOP 10

  1. Google Maps(グーグルマップ)日本版 - 地図検索、ルート情報 (9 PV)
  2. 有力将棋系ユーチューバーのショウヤンさんが将棋ウォーズで「ソフト指し」を告白し衝撃走る (8 PV)
  3. ウェブページを1回だけリロード(再表示)する方法 (5 PV)
  4. [将棋]ユーチューバーのクロノさんが将棋ウォーズ運営からアカウント停止の警告を受ける #ソフト指し #複垢 #アカBAN (4 PV)
  5. 最新のGoogle News(グーグルニュース)日本版のRSSが取得できるURL (3 PV)
  6. [Perl]UTF-8でエンコードされた文字列の文字数を取得するコード (3 PV)
  7. Google News (グーグルニュース)日本版 (3 PV)
  8. 2chまとめサイト - 痛いニュース(ノ∀`) (2 PV)
  9. かなとローマ字をシンプルに相互変換するPerlモジュール (2 PV)
  10. GYAO!(ギャオ) - 映画、アニメ、ドラマ、音楽の無料動画 (2 PV)

今月のアクセスランキング TOP 10

  1. SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (2217 PV)
  2. 有力将棋系ユーチューバーのショウヤンさんが将棋ウォーズで「ソフト指し」を告白し衝撃走る (685 PV)
  3. Google News (グーグルニュース)日本版 (512 PV)
  4. 最新のGoogle News(グーグルニュース)日本版のRSSが取得できるURL (431 PV)
  5. Google Maps(グーグルマップ)日本版 - 地図検索、ルート情報 (350 PV)
  6. [将棋]ユーチューバーのクロノさんが将棋ウォーズ運営からアカウント停止の警告を受ける #ソフト指し #複垢 #アカBAN (257 PV)
  7. [将棋]角換わり▲4五桂速攻(△6五桂速攻) #佐藤天彦名人 #三浦弘行九段 (251 PV)
  8. Google Finance(グーグルファイナンス)日本版が表示されるようになってますが・・・ (195 PV)
  9. 嬉野流開発者のたまごん(嬉野宏明)さんがソフト指し疑惑で将棋倶楽部24のアカウントを停止されてしまう #将棋 (178 PV)
  10. ウェブページを1回だけリロード(再表示)する方法 (156 PV)

アクセス統計

ディレクトリ

関連サイト