ふりかえり

本記事は、SQLの基本、実務使用例編になります。
SQLの基礎に関しましては、
【初学者必見!】SQLの超基礎編の記事をご覧くださいませ。

本編に入ります!
関数の基本構文

まずは、基本構文から見ていきましょう!
列名 比較演算子 ANY (サブクエリ)

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

はい、そうです!
ANY は 「サブクエリで取得した値のいずれか1つと比較」 するときに使うSQLのキーワードです。
他の比較演算子(>, <, =, != など)と組み合わせて使います。
ANY の後に続く サブクエリ は、複数の値を持つリストを返す。
ANY の前にある 比較演算子(> や = など) によって、サブクエリ内のどれか1つの値と比較される。
実務レベルの使用例を見ていこう!

実際に、SQLを使用してデータを確認していきましょう。
SQLに関しては以下を使用して解説していきます。
create table文、select文、insert文、update文、delete文、
drop table文、につきましては、過去にアップロードした
【初学者必見!】SQLの超基礎編の記事をご覧くださいませ。

目次の、「ふりかえり」のところにそれぞれの記事のリンクが
貼ってあるよ!
または、サイドバーのカテゴリーに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-25 と 2024-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 = '営業'は、「営業」部に所属する職員のリストを取得します(1001、1003)。 STAFF_NO = any (...)は、リスト内のどれかと一致する職員のデータを取得します。
まとめ
ANY のポイント!
ANYは、サブクエリで返された複数の値の いずれか1つと比較 する場合に使用する。>や<と組み合わせると「サブクエリのいずれかの値よりも大きい(小さい)」データを取得できる。=や!=と組み合わせると、「サブクエリのいずれかの値と一致する(しない)」データを取得できる。

ANYについて解説しました。
次回もお楽しみに!










コメント