SQLで1件だけを複数検索結果から取り出すには?

SQL

SQLで内容確認のため1件だけ取り出したい時ありませんか。
また、ある項目でグルーピングして、その代表として1件を取り出したいことはありませんか。

この記事では、3つの方法をお教えします。場合に応じて使い分けて見てください。

SQLで1件だけ①単純に検索結果を1件にする

これから分析するにあたり、カラム名やカラム内にどんな値が入っているか知りたい場合は「sample」句が使えます。(DBによる)

書式は以下の通りです。

SELECT * FROM テーブル名 sample 1 ;

つまりSLECT文の最後に「sample 1」とつけるだけです。
これで検索対象のデータのサンプルを1件取得する事ができます。

当然「sample 10」とすると10件の行を取得する事ができます。

データの傾向を見るためには100件ぐらい取得するとよいでしょう。

「sample」の代わりに「TOP」句が使えるDBMSもあります。

SELECT TOP 10 * FROM テーブル名 ;

SQLで1件だけ②「ROWNUM」使う

「ROWNUM」はSQLで使用できる予約語で、抽出された行に振られる番号です。
(DBMSによる)

例えば次のような検索では

SELECT *
FROM
(SELECT カラム名1,カラム名2 …
FROM テーブル名
WHERE カラム1 >= 100 条件
ORDER BY カラム1)
WHERE ROWNUM <= 1

カラム1の値が100以上である行を抽出する副問い合わせで
結果をカラム1で順番に並べます。

そして順番に並べたことで振られるROWNUMを使って1行抽出しています。
この方法では特定のカラムの値に条件を与えたり、ORDER BYすることで取得する事で、取得行をある程度選べます。

SQLで1件だけ③「TOP RANK() PARTITION」で1件取得する

「RANK() PARTITION」でGROUP BYのようなくくりを作ってその中での「TOP 1」を表示させます。

select TOP 1 カラム1,カラム2 ,
rank() over(partition by カラム1 order by カラム2 desc) 順位
from テーブル名
order by カラム1;

まとめ

SQLで1件だけ表示させる方法をいくつか紹介しました。

  • 「SAMPLE」や「TOP」を使う方法
  • 「ROWNUM」を使う方法
  • 「RANK() PARTITION」を使う方法

それぞれ、特徴があり、使えるDBMSも異なるのでいろいろ試して確認しておきましょう。

タイトルとURLをコピーしました