« はやぶさ成功! | トップページ | 変数設計の難しさ »

2005.12.22

衝撃! informixでも件数制限出来た

おバカなタイトルをつけてしまったが……
TOP句が使えないんで、ダメダメなDBMSと勝手に決めつけてたinformixだが、First句というのがあるんでやんの。
手元にあるVer7のドキュメントには出てこないんだけども、8以降とかで実装されたのだろうか?
TOPとLIMITは試したんだが、FIRSTというのを使うのは初見でありましたですよ、はい。

ともあれ
 SELECT FIRST n FROM table;
でめでたくn行だけ抽出できる。これを知らんかったためにどれだけ無駄な努力をしたことか……

ついでなんでDBMSごとの方言を整理してみよう。

DBMS選択式
MS SQL ServerSELECT TOP n ... FROM....
SybaseTOP
InformixSELECT FIRST n ... FROM....
DB2SELECT ... FROM ... FETCH FIRST n ROWS ONLY
OracleTOPSELECT ... FROM ... WHERE ROWNUM <= n
PostgreSQLSELECT ... FROM .... LIMIT n
MySQLSELECT ... FROM ... LIMIT n
(2007-3-6 Oracleを修正。当初はTOPとしていた) (2006-1-27 DB2を追加、各DBMSでの記述位置を追加)

自分で使ったことがあるのが"MS SQL server","Informix", "PostgreSQL","MySQL"だけ(我ながらマイナーな奴め)なんで、その他のDBMSのは間違いがあるかも。識者の訂正を待つ(^^;

|

« はやぶさ成功! | トップページ | 変数設計の難しさ »

コメント

DB2の場合は、

SELECT ... FROM ... FETCH FIRST n ROWS ONLY

ですね。

投稿: SIM | 2006.01.26 23:00

SIMさん、情報ありがとうございます。
DB2はまた、ずいぶん癖が違うんですね(^^;
使用する句だけじゃなくて、語順もそれぞれ特徴がありますので、あとで修正しておきます。

投稿: かっしい | 2006.01.27 09:08

OracleでSELECT TOP n * FROM TABLEって使えましたっけ?
使えるのはDISTINCT/UNIQUE/ALLだけで、TOPでの取得件数制限はできなかった他記憶しています。

7.3x~10.1.xではROWNUMつかって、
SELECT * FROM TABLE WHERE ROWNUM =< 5;
とかじゃないと頭5件とかは取得できなかったように思いますが。

投稿: ykaku | 2007.03.06 10:49

>ykakuさん
情報ありがとうございます。
どうも
 SELECT ... FROM ... WHERE rownum <= n
が正しいようです(^^;
なんの資料を見てTOPにしたんだろう・・・
修正しておきます。

投稿: かっしい | 2007.03.06 15:31

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/2022/7777666

この記事へのトラックバック一覧です: 衝撃! informixでも件数制限出来た:

« はやぶさ成功! | トップページ | 変数設計の難しさ »