« 行列のできる店のラーメン 山形 | トップページ | MySQLでレプリケーション(前置き) »

MySQLでOracleのrownumやSQLServerのTopを実現する

グリッドのページ送りをしたいときや、大量データのテーブルなどで取得データの件数を制限したい場合ありますよね。

OracleではROWNUMで、SQLserverではTOPというキーワードがあります。

もちろんMySQLにもあります。それが「limit」。どちらかというとSQLserverのTOPに近い感じかな。

MySQLマニュアル

[1] 先頭から10件を取りたい場合。

select * from test
where aaa = '1'
   order by key01
   limit 10

[2] 最後から5件を取りたい場合。

select * from test
where aaa = '1'
   order by key01 desc
   limit 5

[3] 先頭から100件目~150件目を取りたい場合。

select * from test
where aaa = '1'
   order by key01
   limit 100, 150

引数が1つでも2つでも勝手に解釈してくれます。さらに応用でこんなこともできます。

データをランダムに10件取得する。

select * from test
where aaa = '1'
   order by rand()
   limit 10

MySQLの関数「 rand()」でランダムに割り当てて並び変えて先頭を取得でおしまい。

ほかのデータベースで同じ事を実現しようとすると、なかなか大変です。

やっぱり便利。MySQL。

|

« 行列のできる店のラーメン 山形 | トップページ | MySQLでレプリケーション(前置き) »

MySQL」カテゴリの記事

コメント

コメントを書く



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




トラックバック

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

この記事へのトラックバック一覧です: MySQLでOracleのrownumやSQLServerのTopを実現する:

« 行列のできる店のラーメン 山形 | トップページ | MySQLでレプリケーション(前置き) »