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も異なるのでいろいろ試して確認しておきましょう。