2008/09/08

[mysql] limit like oracle 's rownum

今、マッシュアップコンテストに備えて猛烈な勢いでアプリを開発中!!
しかも、今回、現場で使っているoracleではなく、mysqlなので、全然慣れずに悪戦苦闘しています。

hetemlでDBのブラウザーを用意してくれているので、それを使ってデータをselectしているのですが、その際に、sql文も一緒にでてくるのですが、select文で


select ・・・・ limit・・・


ん??

limit

limitって何ぞや??
と思ったので、リファレンスで調べることに。

おそらくoracleでいうところの、rownumにあたるのではないのかなーと思ったら、案の定ビンゴ!!

でも、正確にいうと同じではないので、≒ぐらいかなと。

LIMIT 節を使用すると、SELECT ステートメントで返されるレコード数を制限することができる。LIMIT は 1 つまたは 2 つの数値引数を取る。これらの引数は整数定数でなければならない。

引数が 1 つの場合、その値は、戻り値として返す、結果セットの冒頭からのレコード数を表す。 引数が 2 つの場合、最初の引数は戻り値として返す最初のレコードまでのオフセットを表し、2 つ目の引数は戻り値として返す最大レコード数を表す。最初のレコードのオフセット値は 0(1 ではない)。

PostgreSQL との互換性を確保するため、MySQL では LIMIT row_count OFFSET offset 構文もサポートしている。

mysql> SELECT * FROM table LIMIT 5,10; # Retrieve rows 6-15
特定のオフセット位置から結果セットの終わりまでのすべてのレコードを取り出すには、2 つ目のパラメータに大きな数値を指定できる。

mysql> SELECT * FROM table LIMIT 95,18446744073709551615; # Retrieve rows 96-last.
引数が 1 つの場合、その値は戻り値として返す最大レコード数を表す。

mysql> SELECT * FROM table LIMIT 5; # Retrieve first 5 rows
つまり、LIMIT n は LIMIT 0,n と指定するのと同じである。

via:6.4.1. SELECT 構文

0 コメント:

コメントを投稿