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句」を使います。
-- ①上位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 |
-- ②上位4件取得する(カラム指定)
SELECT NAME, AGE FROM SAMPLE_TABLE LIMIT 4;
NAME | AGE |
---|---|
太郎 | 39 |
次郎 | 27 |
三郎 | 13 |
絵美 | 30 |
-- ③年齢(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」を検索条件に指定して取得します。
-- ①上位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」を指定することで実現できます
-- ①上位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」と記載することで、上位何パーセントを検索することも可能です。
-- ④年齢(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 |
以上です。