【初学者必見!】SQLの基本、実務使用例を徹底解説!fetch first 1 rows only編

【初学者必見!】SQLの使用例を解説!fetch first 1 rows only編 SQL

※この記事にはプロモーションが含まれています。

ふりかえり

筆者
筆者

本記事は、SQLの基本、実務使用例編になります。

SQLの基礎に関しましては、

【初学者必見!】SQLの超基礎編の記事をご覧くださいませ。

A子
A子

本編に入ります!

fetch first 1 rows only とは?

筆者
筆者

これは SQLで「上位の1件だけを取り出す」 ときに使う命令です。

たとえば、データベースの中に100件のデータがあっても、そのうちの最初の1件だけ欲しいときに使います。

使い方の例

select *
from 社員
order by 入社日 asc
fetch first 1 rows only;

意味:

  • order by 入社日 asc:入社日の早い順に並べます(昇順)。
  • fetch first 1 rows only:そのうち 1行目だけ を取り出します。

どんなときに使う?

  • 最新の情報(例:最新の注文)を1件だけ見たいとき
  • 古いデータを1つだけ確認したいとき
  • 「最も金額が高い商品」など、1番目だけ知りたいとき

注意点

  • order by がないと、「どの1件か」が決まらないので、必ずセットで使うのが安全です。
  • 複数件ほしい場合は fetch first 3 rows only のように数字を変えられます。

Oracle以外では?

  • OracleやPostgreSQLではこの構文が使えます。
  • SQL Serverでは代わりに top 1 を使います:

select top 1 *
from 社員
order by 入社日 asc;

fetch first 1 rows only のメリット

① 不要な行を取らずに済む(パフォーマンス向上)

  • 例えば1万件のデータがあるテーブルで、
    全件検索せずに「必要な1件だけ」を取れるので、
    データ量が少なく済み、処理が速くなる可能性があります。

select *
from 注文
order by 注文日時 desc
fetch first 1 rows only;  -- 最新の注文1件だけ

→ 上位1件を取ればいいなら、それ以上の行を読み込まないので、
 ディスクI/Oが減り、応答速度が上がることがあります。

② 明確な目的を伝えられる(可読性・意図が明確)

rownum = 1limit 1 よりも 標準SQLに近く可搬性が高い

「1件だけ欲しい」と意図がはっきりしたクエリになります。

③ サブクエリでの使用に便利(存在チェックにも使える)

exists の中や in の中など、1件だけで十分な場面では
無駄なデータ読み込みを避けられます。

ただし注意点もアリ

インデックスと組み合わせないと速くならないことも・・

order by を指定することでソート処理が発生します。
たとえばインデックスがないと、全件読み込んでソートしてから
1件を取るので、パフォーマンスが下がることもあります

select *
from 注文
order by 注文日時 desc
fetch first 1 rows only;

結論

目的効果
上位数件の取得データ量が減り、処理が高速になる可能性あり
意図の明確化読みやすいSQLになる
サブクエリでの存在チェック無駄な行取得を防げる

まとめ

筆者
筆者

fetch first 1 rows onlyについて解説しました。

次回もお楽しみに!

この記事を書いた人
たくたく

文系出身・3年目のWeb系エンジニアです。
C#とSQLを得意としています。
同棲生活は2年目に入り、日々仲良く楽しく暮らしています。
プライベートではバイクや車で旅行に行くことが趣味です。
サンリオ好きで、中でもシナモン推しです。
お酒好きとして毎週の晩酌をリラックスタイムにしています。

たくたくをフォローする
SQLエンジニア
シェアする

コメント

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