MySQLでOracleのrownumやSQLServerのTopを実現する
グリッドのページ送りをしたいときや、大量データのテーブルなどで取得データの件数を制限したい場合ありますよね。
OracleではROWNUMで、SQLserverではTOPというキーワードがあります。
もちろんMySQLにもあります。それが「limit」。どちらかというとSQLserverのTOPに近い感じかな。
[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でlimitを使用したデータ件数カウント(SQL_CALC_FOUND_ROWS)(2008.03.16)
- MySQLでレプリケーション(前置き)(2008.01.05)
- MySQLでOracleのrownumやSQLServerのTopを実現する(2007.12.26)
- MySQLでUTF-8の設定方法(2007.12.02)

コメント