【SQL】SELECT文で取得件数を指定して検索する(MySQL、Oracle、SQLServer)

DBを使っていて、テーブルの件数が多いけど中の構造をちょっと見てみたいケースがよく起こります。

そんな時便利なのが、SELECT文を使って「先頭から上位数件を取得する」方法です。

今回は自分が普段使っているMySQL、Oracle、SQLServerでの方法をここにメモしておきます。

 

先頭から上位数件のレコードを検索する

検索対象のサンプルとして以下のテーブルを使います。

テーブル名:SAMPLE_TABLE

ID NAME AGE MAIL
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.com

 

MySQL

MySQLの場合、取得件数の指定には「LIMIT句」を使います。

-- ①上位4件取得する
SELECT * FROM SAMPLE_TABLE LIMIT 4;
ID NAME AGE MAIL
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 MAIL
6 香奈子 10 kana@sample.com
3 三郎 13 sub@sample.com
5 美香 20 mika@sample.com
2 次郎 27 jiro@sample.com

 

 

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 MAIL
6 香奈子 10 kana@sample.com
3 三郎 13 sub@sample.com
5 美香 20 mika@sample.com


投稿日:2019-08-04    更新日:2019-08-05

[スポンサーリンク]

関連記事
勉強した内容を緩くメモする|JBの技術メモ
勉強した内容を緩くメモする|JBの技術メモ
勉強した内容を緩くメモする|JBの技術メモ
勉強した内容を緩くメモする|JBの技術メモ
勉強した内容を緩くメモする|JBの技術メモ
勉強した内容を緩くメモする|JBの技術メモ
サイト内検索
プロフィール

プロフィール

[Name : じゃぶじゃぶ(@jbjb_2019)]
都内で社内SEをしているおじさん。
仕事で得られる知識だけでは限界を感じ、 WEBの勉強がてらITブログを開始。
サーバからWEBサイトまでフルスクラッチで開発しました。
現在は勉強のモチベーションを保つために活用中。
興味があることを雑記的に書いていきます。

[スポンサーリンク]

[スポンサードリンク]

最近の記事