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

サムネイル SQL

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

ふりかえり

筆者
筆者

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

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

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

A子
A子

本編に入ります!

in関数の基本構文

筆者
筆者

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

SELECT 列名
FROM テーブル名
WHERE 列名 IN (値1, 値2, 値3, ...);

A子
A子

select,from,where,inね!

筆者
筆者

はい、そうです!

IN は、SQLのWHERE句で 「複数の値の中にあるかどうか」 を判定するために使われる演算子です。これにより、特定の値のリストと比較し、一致するデータを取得できます。

列名:検索するカラム(例: STAFF_NO, APPLI_NO など)

テーブル名:対象のテーブル(例: 申請管理情報(値1, 値2, 値3, ...):検索対象の値をカンマ , で区切って指定

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

筆者
筆者

実際に、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) 
    APPROVAL_DATE date,               -- 承認日 (Approval Date)
    SEND_BACK_DATE date,              -- 差戻年月日 (Send Back Date) 
    APPLICATION_CONTENT varchar2(50), -- 申請内容 (Application Content) 
    constraint PK_申請管理情報 primary key (STAFF_NO, APPLI_NO)

);

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

IN を使って特定の申請情報を取得する

select * 
from 申請管理情報 
where APPLI_NO in ('A001', 'A003');

where APPLI_NO in ('A001', 'A003') は、APPLI_NO'A001' または 'A003' のいずれかに一致する場合にデータを取得します。

NOT IN を使って、特定のデータを除外する

select * 
from 申請管理情報 
where APPLI_NO not in ('A001', 'A002');

not in ('A001', 'A002') によって、A001A002 を除外したデータが取得できます。

IN を使った大文字・小文字の注意点

select * 
from 申請管理情報 
where APPLI_NO in ('A003');

APPLI_NO のデータには A003a003 という2つの異なる値が含まれています。しかし、Oracle のデフォルト設定では VARCHAR2 型の比較は 大文字・小文字を区別 します。

select * 
from 申請管理情報 
where upper(APPLI_NO) in ('A003');

まとめ

IN を使うと、複数の条件を簡潔に指定できる。

NOT IN を使えば、特定の値を除外できる。

IN はサブクエリと組み合わせると強力な検索ができる。

VARCHAR2 型のデータはデフォルトで大文字・小文字を区別するので注意が必要。

筆者
筆者

in関数について解説しました。

IN を使うことで、可読性の高いSQLを効率よく書くことができます!

次回もお楽しみに!

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

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

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

コメント

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