[date:200503]の検索結果


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 (17) | 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. SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (211 PV)
  2. Google News (グーグルニュース)日本版 (25 PV)
  3. [将棋]中学生プロ棋士「藤井聡太四段」が上州YAMADAチャレンジ杯で3連勝し連勝記録を23連勝に伸ばす (23 PV)
  4. グーグルニュース日本語版が見れない (18 PV)
  5. [将棋]将棋実況ユーチューバーのクロノさんが朝日新聞のクレームで棋譜中継を配信中止 (16 PV)
  6. Dailymotion(デイリーモーション) - 動画共有サイト (9 PV)
  7. 「CASH(キャッシュ)」アイテム(ブランド品やガジェット)の写真を撮れば審査なしで現金化できるサービス (8 PV)
  8. [食べ物]七草粥(ななくさがゆ) (8 PV)
  9. CommentPP 1.3のリリース (7 PV)
  10. [将棋]竜王戦第三局は居飛車振り飛車の対抗型で丸山忠久九段が勝利 #竜王戦 (6 PV)

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

  1. SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (3361 PV)
  2. グーグルニュース日本語版が見れない (3286 PV)
  3. Google News (グーグルニュース)日本版 (1112 PV)
  4. [将棋]将棋実況ユーチューバーのクロノさんが朝日新聞のクレームで棋譜中継を配信中止 (300 PV)
  5. 「CASH(キャッシュ)」アイテム(ブランド品やガジェット)の写真を撮れば審査なしで現金化できるサービス (196 PV)
  6. Google(グーグル) 日本版 (170 PV)
  7. ウェブページを1回だけリロード(再表示)する方法 (168 PV)
  8. [C言語]UTF-8でエンコードされた文字列の部分文字列を取り出すコード (139 PV)
  9. 将棋ウォーズスーパープレミアムプラン販売開始、香川愛生女流三段のボイスが選択可能 #将棋 (121 PV)
  10. アマゾンで買った商品(荷物)が届かない #デリバリープロバイダ (107 PV)

アクセス統計

ディレクトリ

関連サイト