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

サムネイル SQL

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

ふりかえり

筆者
筆者

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

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

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

A子
A子

本編に入ります!

ALL関数の基本構文

筆者
筆者

まずは、基本構文から見ていきましょう!

SELECT 列名
FROM テーブル名
WHERE 値や列名 演算子 ALL (サブクエリ);

A子
A子

ANY構文と似ているね!

筆者
筆者

はい、そうです!

ALL は、サブクエリで取得したすべての値に対して条件を適用する SQL の演算子です。
比較演算子(><>=<== など)と組み合わせて使います。

演算子 には >(より大きい)、<(より小さい)、=(等しい)などを使います。

(サブクエリ) の部分は、SELECT 文を使って値のリストを取得します。

メインクエリの値と、サブクエリのすべての値を比較 します。

実務レベルの使用例を見ていこう!

筆者
筆者

実際に、SQLを使用してデータを確認していきましょう。

SQLに関しては以下を使用して解説していきます。

create table文、select文、insert文、update文、delete文、

drop table文、につきましては、過去にアップロードした

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

A子
A子

目次の、「ふりかえり」のところにそれぞれの記事のリンクが

貼ってあるよ!

または、サイドバーのカテゴリーにSQLがあるから、そちらからでも

参照できます!

[事前準備]今回、実行するSQLの一覧

-- 申請管理情報テーブルの作成
create table 申請管理情報 (
    STAFF_NO varchar2(10) not null,   -- 職員番号 (Staff Number) 
    APPLI_NO varchar2(10) not null,   -- 申請番号 (Application Number) 
    APPLI_DATE date,                  -- 申請年月日 (Application Date) 
    DEPARTMENT varchar2(10),          -- 部署名(Department)
    constraint PK_申請管理情報 primary key (STAFF_NO, APPLI_NO)

);

insert into 申請管理情報 (STAFF_NO, APPLI_NO, APPLI_DATE, DEPARTMENT) 
values ('1001', 'A001', TO_DATE('2024-02-25', 'YYYY-MM-DD'),'営業');
insert into 申請管理情報 (STAFF_NO, APPLI_NO, APPLI_DATE, DEPARTMENT)
values ('1001', 'A002', TO_DATE('2024-02-26', 'YYYY-MM-DD'),'営業');
insert into 申請管理情報 (STAFF_NO, APPLI_NO, APPLI_DATE, DEPARTMENT)
values ('1002', 'A003', TO_DATE('2024-02-27', 'YYYY-MM-DD'),'開発');
insert into 申請管理情報 (STAFF_NO, APPLI_NO, APPLI_DATE, DEPARTMENT)
values ('1002', 'a003', TO_DATE('2024-01-27', 'YYYY-MM-DD'),'開発');
insert into 申請管理情報 (STAFF_NO, APPLI_NO, APPLI_DATE, DEPARTMENT)
values ('1003', 'A004', TO_DATE('2024-02-28', 'YYYY-MM-DD'),'営業');


すべての申請日より後の日付の申請を探す

select * 
from 申請管理情報 
where appli_date > all (select appli_date from 申請管理情報 where department = '営業');

営業 部署のすべての appli_date を取得し、そのすべてよりも後の日付 (appli_date > ALL) の申請を取得します。

営業 部署の申請日は '2024-02-25''2024-02-26''2024-02-28' です。これらの すべてより後 という条件なので、2024-02-28 より後の申請があるかをチェックする ことになります。

しかし、テーブル内に 2024-02-28 より後の申請はないため、このクエリは 結果なし になります。

すべての申請が行われた後の申請がある職員を探す

select * 
from 申請管理情報 
where appli_date > all (select appli_date from 申請管理情報 where staff_no = '1001');

staff_no = '1001'appli_date2024-02-252024-02-26

appli_date がそれら すべてより後(2024-02-26 より後) の申請を探します。

2024-02-272024-02-282024-02-26 より後なので該当します。

まとめ

  • ALLサブクエリのすべての値に対して条件を適用します。
  • > ALL (...)すべてより大きい値 を取得します。
  • < ALL (...)すべてより小さい値 を取得します。
  • = ALL (...)すべての値と等しい場合のみ取得します(現実的にはほぼ使わない)。
  • 結果がゼロになるケースが多い ので、意図を明確にして使う必要があります。
筆者
筆者

ALLについて解説しました。

通常、ALL よりも ANYIN を使うことが多いですが、すべての値を基準に比較したい場合 には ALL が有効です。

次回もお楽しみに!

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

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

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

コメント

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