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。
| 固定リンク | コメント (0) | トラックバック (0)

最近のコメント