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

サムネイル SQL

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

ふりかえり

筆者
筆者

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

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

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

A子
A子

本編に入ります!

関数の基本構文

筆者
筆者

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

列名 比較演算子 ANY (サブクエリ)

A子
A子

比較演算子が出てきたね。

筆者
筆者

はい、そうです!

ANY「サブクエリで取得した値のいずれか1つと比較」 するときに使うSQLのキーワードです。


他の比較演算子(>, <, =, != など)と組み合わせて使います。

ANY の後に続く サブクエリ は、複数の値を持つリストを返す。

ANY の前にある 比較演算子(>= など) によって、サブクエリ内のどれか1つの値と比較される。

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

筆者
筆者

実際に、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 > any (
    select APPLI_DATE 
    from 申請管理情報 
    where STAFF_NO = '1001'
);

サブクエリ select APPLI_DATE from 申請管理情報 where STAFF_NO = '1001' は、職員番号 '1001' の申請日をリストとして返します(2024-02-252024-02-26)。

APPLI_DATE > any (...) は、リスト内のいずれかの日付より後のデータを取得します。

つまり、2024-02-25 または 2024-02-26 より後の申請を探します。

特定の部署のいずれかの申請を持つ職員のデータを取得する

select * 
from 申請管理情報 
where STAFF_NO = any (
    select STAFF_NO 
    from 申請管理情報 
    where DEPARTMENT = '営業'
);
  • サブクエリ select STAFF_NO from 申請管理情報 where DEPARTMENT = '営業' は、「営業」部に所属する職員のリストを取得します(10011003)。
  • STAFF_NO = any (...) は、リスト内のどれかと一致する職員のデータを取得します。

まとめ

ANY のポイント!

  • ANY は、サブクエリで返された複数の値の いずれか1つと比較 する場合に使用する。
  • >< と組み合わせると「サブクエリのいずれかの値よりも大きい(小さい)」データを取得できる。
  • =!= と組み合わせると、「サブクエリのいずれかの値と一致する(しない)」データを取得できる。

筆者
筆者

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

次回もお楽しみに!

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

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

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

コメント

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