DBを使っていて、テーブルの件数が多いけど中の構造をちょっと見てみたいケースがよく起こります。
そんな時便利なのが、SELECT文を使って「先頭から上位数件を取得する」方法です。
今回は自分が普段使っているMySQL、Oracle、SQLServerでの方法をここにメモしておきます。
目次[表示]
先頭から上位数件のレコードを検索する
サンプル
検索対象のサンプルとして以下のテーブルを使います。
テーブル名:SAMPLE_TABLE
ID | NAME | AGE | |
---|---|---|---|
1 | 太郎 | 39 | taro@sample.com |
2 | 次郎 | 27 | jiro@sample.com |
3 | 三郎 | 13 | sub@sample.com |
4 | 絵美 | 30 | emi@sample.com |
5 | 美香 | 20 | mika@sample.com |
6 | 香奈子 | 10 | kana@sample.co |
MySQL
MySQLの場合、取得件数の指定には「LIMIT句」を使います。
1 2 | -- ①上位4件取得する SELECT * FROM SAMPLE_TABLE LIMIT 4; |
ID | NAME | AGE | |
1 | 太郎 | 39 | taro@sample.com |
2 | 次郎 | 27 | jiro@sample.com |
3 | 三郎 | 13 | sub@sample.com |
4 | 絵美 | 30 | emi@sample.com |
1 2 | -- ②上位4件取得する(カラム指定) SELECT NAME , AGE FROM SAMPLE_TABLE LIMIT 4; |
NAME | AGE |
---|---|
太郎 | 39 |
次郎 | 27 |
三郎 | 13 |
絵美 | 30 |
1 2 | -- ③年齢(AGE)が若い順に上位4件取得する SELECT main.* FROM ( SELECT * FROM SAMPLE_TABLE OREDER BY AGE ASC ) main LIMIT 4; |
ID | NAME | AGE | |
---|---|---|---|
6 | 香奈子 | 10 | kana@sample.com |
3 | 三郎 | 13 | sub@sample.com |
5 | 美香 | 20 | mika@sample.com |
2 | 次郎 | 27 | jiro@sample.co |
Oracle
Oracleの場合は「WHERE句」の中で「rownum」を検索条件に指定して取得します。
1 2 3 4 5 6 | -- ①上位4件取得する SELECT * FROM SAMPLE_TABLE WHERE rownum <= 4; -- ②上位4件取得する(カラム指定) SELECT NAME , AGE FROM SAMPLE_TABLE WHERE rownum <= 4; -- ③年齢(AGE)が若い順に上位4件取得する SELECT main.* FROM ( SELECT * FROM SAMPLE_TABLE OREDER BY AGE ASC ) main WHERE main.rownum <= 4; |
SQLServer
SQLServerの場合、カラムの先頭で「TOP」を指定することで実現できます
1 2 3 4 5 6 | -- ①上位4件取得する SELECT TOP 4 * FROM SAMPLE_TABLE; -- ②上位4件取得する(カラム指定) SELECT TOP 4 NAME , AGE FROM SAMPLE_TABLE; -- ③年齢(AGE)が若い順に上位4件取得する SELECT TOP 4 * FROM SAMPLE_TABLE OREDER BY AGE ASC ; |
さらに「TOP 数値 PERCENT」と記載することで、上位何パーセントを検索することも可能です。
1 2 | -- ④年齢(AGE)が若い順に上位50%を取得する SELECT TOP 50 PERCENT * FROM SAMPLE_TABLE OREDER BY AGE ASC ; |
ID | NAME | AGE | |
---|---|---|---|
6 | 香奈子 | 10 | kana@sample.com |
3 | 三郎 | 13 | sub@sample.com |
5 | 美香 | 20 | mika@sample.com |
以上です。