logo

SQL での IN の使用方法

この SQL 記事では、SQL データベースのクエリで IN キーワードを使用する方法を学習します。

SQLのINキーワードとは何ですか?

は、データベース ユーザーが WHERE 句で複数の値を定義できるようにする構造化照会言語の論理演算子です。

IN 演算子を使用した WHERE 句は、指定された値のセットと一致する結果内のレコードを表示します。 IN 演算子の括弧内にサブクエリを指定することもできます。

IN 演算子は、SQL データベースの INSERT、SELECT、UPDATE、および DELETE クエリで使用できます。

SQL の IN 演算子は、クエリ内の複数の OR 条件の処理を置き換えます。

IN 演算子の構文:

 SELECT Column_Name_1, Column_Name_2, Column_Name_3, ......, Column_Name_N FROM Table_Name WHERE Column_Name IN (Value_1, Value_2, Value_3, ......., Value_N); 

SQL ステートメントで IN 演算子を使用する場合は、以下に示す手順を同じ順序で実行する必要があります。

  1. SQLでデータベースを作成します。
  2. 新しい SQL テーブルを作成します。
  3. テーブルにデータを挿入します。
  4. 挿入されたデータを表示します。
  5. SQL IN 演算子を使用してテーブルのデータを表示します。

ここで、最良の SQL 例を使用して、各ステップを 1 つずつ簡単に説明します。

ステップ 1: 単純な新しいデータベースを作成する

最初のステップは、構造化照会言語で新しいデータベースを作成することです。

次の CREATE ステートメントは、新しい 機械大学 SQLサーバーのデータベース:

 CREATE Database Mechanical_College; 

ステップ 2: 新しいテーブルを作成する

ここで、データベース内に新しいテーブルを作成するのに役立つ次の SQL 構文を使用します。

 CREATE TABLE table_name ( 1st_Column data type (character_size of 1st Column), 2nd_Column data type (character_size of the 2nd column ), 3rd_Column data type (character_size of the 3rd column), ... 
 Nth_Column data type (character_size of the Nth column) ); 

次の CREATE ステートメントは、 教員紹介 のテーブル 機械大学 データベース:

 CREATE TABLE Faculty_Info ( Faculty_ID INT NOT NULL PRIMARY KEY, Faculty_First_Name VARCHAR (100), Faculty_Last_Name VARCHAR (100), Faculty_Dept_Id INT NOT NULL, Faculty_Joining_DateDATE, Faculty_City Varchar (80), Faculty_Salary INT ); 

ステップ 3: データをテーブルに挿入する

次の INSERT クエリは、Faculties_Info テーブルに Faculties のレコードを挿入します。

 INSERT INTO Faculty_Info (Faculty_ID, Faculty_First_Name, Faculty_Last_NameFaculty_Dept_Id, Faculty_Joining_Date, Faculty_City, Faculty_Salary) VALUES (1001, Arush, Sharma, 4001, 2020-01-02, Delhi, 20000); INSERT INTO Faculty_Info (Faculty_ID, Faculty_First_Name, Faculty_Last_NameFaculty_Dept_Id, Faculty_Joining_Date, Faculty_City, Faculty_Salary) VALUES (1002, Bulbul, Roy, 4002, 2019-12-31, Delhi, 38000 ); INSERT INTO Faculty_Info (Faculty_ID, Faculty_First_Name, Faculty_Last_NameFaculty_Dept_Id, Faculty_Joining_Date, Faculty_City, Faculty_Salary) VALUES (1004, Saurabh, Sharma, 4001, 2020-10-10, Mumbai, 45000); INSERT INTO Faculty_Info (Faculty_ID, Faculty_First_Name, Faculty_Last_NameFaculty_Dept_Id, Faculty_Joining_Date, Faculty_City, Faculty_Salary) VALUES (1005, Shivani, Singhania, 4001, 2019-07-15, Kolkata, 42000); INSERT INTO Faculty_Info (Faculty_ID, Faculty_First_Name, Faculty_Last_NameFaculty_Dept_Id, Faculty_Joining_Date, Faculty_City, Faculty_Salary) VALUES (1006, Avinash, Sharma, 4002, 2019-11-11, Delhi, 28000); INSERT INTO Faculty_Info (Faculty_ID, Faculty_First_Name, Faculty_Last_NameFaculty_Dept_Id, Faculty_Joining_Date, Faculty_City, Faculty_Salary)VALUES (1007, Shyam, Besas, 4003, 2021-06-21, Lucknow, 35000); 

ステップ 4: 挿入されたデータを表示する

次の SELECT ステートメントは、Faculty_Info テーブルのデータを表示します。

 SELECT * FROM Faculty_Info; 

教員ID 教員名 教員の姓 学部_学科_Id 教員入社日 学部_都市 教員_給与
1001 クマ シャルマ 4001 2020-01-02 デリー 20000
1002 ヒヨドリ ロイ 4002 2019-12-31 デリー 38000
1004 サウラブ ロイ 4001 2020-10-10 ムンバイ 45000
1005 シヴァニ シンガニア 4001 2019-07-15 コルカタ 42000
1006 アビナシュ シャルマ 4002 2019-11-11 デリー 28000
1007 シャム キスをして 4003 2021-06-21 ラクナウ 35000

ステップ 5: IN 演算子を使用して、Faculty_Info テーブルのデータをさまざまな方法で表示する

次のクエリでは、IN 演算子を使用して数値を使用します。

 SELECT Faculty_Id, Faculty_First_Name, Faculty_Dept_Id, Faculty_Joining_Date, Faculty_Salary FROM Faculty_Info WHERE Faculty_Salary IN ( 38000, 42000, 45000, 35000); 

このクエリは、WHERE 句の IN 演算子で給与が渡される学部のレコードのみを表示します。

出力:

教員ID 教員名 学部_学科_Id 教員入社日 教員_給与
1002 ヒヨドリ 4002 2019-12-31 38000
1004 サウラブ 4001 2020-10-10 45000
1005 シヴァニ 4001 2019-07-15 42000
1007 シャム 4003 2021-06-21 35000

次のクエリでは、IN 論理演算子を使用してテキストまたは文字値を使用します。

 SELECT Faculty_Id, Faculty_First_Name, Faculty_Joining_Date, Faculty_City FROM Faculty_Info WHERE Faculty_City IN ( Mumbai, Kolkata, Lucknow); 

このクエリは、WHERE 句の IN 演算子の括弧内に都市が含まれる学部のレコードのみを表示します。

出力:

教員ID 教員名 教員入社日 学部_都市
1004 サウラブ 2020-10-10 ムンバイ
1005 シヴァニ 2019-07-15 コルカタ
1007 シャム 2021-06-21 ラクナウ

次のクエリでは、DATEformat と IN 論理演算子を使用します。

 SELECT Faculty_Id, Faculty_First_Name, Faculty_Dept_ID Faculty_Joining_Date, Faculty_Salary FROM Faculty_Info WHERE Faculty_Joining_Date IN (2020-01-02, 2021-06-21, 2020-10-10, 2019-07-15); 

このクエリは、入社日が WHERE 句の IN 演算子で渡された学部のレコードのみを表示します。

出力:

教員ID 教員名 学部_学科_Id 教員入社日 教員_給与
1001 クマ 4001 2020-01-02 20000
1004 サウラブ 4001 2020-10-10 45000
1005 シヴァニ 4001 2019-07-15 42000
1007 シャム 4003 2021-06-21 35000

次のクエリでは、SQL UPDATE コマンドと IN 論理演算子を使用します。

npmインストールコマンド
 UPDATE Faculty_Info SET Faculty_Salary = 50000 WHERE Faculty_Dept_ID IN (4002, 4003); 

このクエリは、Dept_Id が WHERE 句の IN 演算子で渡される学部の給与を更新します。

上記のクエリの結果を確認するには、SQL で次の SELECT クエリを入力します。

 SELECT * FROM Faculty_Info; 
教員ID 教員名 教員の姓 学部_学科_Id 教員入社日 学部_都市 教員_給与
1001 クマ シャルマ 4001 2020-01-02 デリー 20000
1002 ヒヨドリ ロイ 4002 2019-12-31 デリー 50000
1004 サウラブ ロイ 4001 2020-10-10 ムンバイ 45000
1005 シヴァニ シンガニア 4001 2019-07-15 コルカタ 42000
1006 アビナシュ シャルマ 4002 2019-11-11 デリー 50000
1007 シャム キスをして 4003 2021-06-21 ラクナウ 50000

サブクエリを使用した SQL IN 演算子

構造化照会言語では、IN 論理演算子を使用してサブクエリを使用することもできます。

サブクエリを使用した IN 演算子の構文は次のとおりです。

 SELECT Column_Name_1, Column_Name_2, Column_Name_3, ......, Column_Name_N FROM Table_Name WHERE Column_Name IN (Subquery); 

サブクエリを使用した IN 演算子を理解したい場合は、CREATE ステートメントを使用して構造化クエリ言語で 2 つの異なるテーブルを作成する必要があります。

次のクエリは、データベースに Faculty_Info テーブルを作成します。

 CREATE TABLE Faculty_Info ( Faculty_ID INT NOT NULL PRIMARY KEY, Faculty_First_Name VARCHAR (100), Faculty_Last_Name VARCHAR (100), Faculty_Dept_Id INT NOT NULL, Faculty_Address Varchar (80), Faculty_City Varchar (80), Faculty_Salary INT ); 

次のクエリは、 部門情報 データベース内のテーブル:

 CREATE TABLE Department_Info ( Dept_Id INT NOT NULL, Dept_Name Varchar(100), Head_Id INT ); 

次の INSERT クエリは、Faculties_Info テーブルに Faculties のレコードを挿入します。

 INSERT INTO Faculty_Info (Faculty_ID, Faculty_First_Name, Faculty_Last_NameFaculty_Dept_Id, Faculty_Address, Faculty_City, Faculty_Salary) VALUES (1001, Arush, Sharma, 4001, 22 street, New Delhi, 20000); INSERT INTO Faculty_Info (Faculty_ID, Faculty_First_Name, Faculty_Last_NameFaculty_Dept_Id, Faculty_Address, Faculty_City, Faculty_Salary) VALUES (1002, Bulbul, Roy, 4002, 120 street, New Delhi, 38000 ); INSERT INTO Faculty_Info (Faculty_ID, Faculty_First_Name, Faculty_Last_NameFaculty_Dept_Id, Faculty_Address, Faculty_City, Faculty_Salary) VALUES (1004, Saurabh, Sharma, 4001, 221 street, Mumbai, 45000); INSERT INTO Faculty_Info (Faculty_ID, Faculty_First_Name, Faculty_Last_NameFaculty_Dept_Id, Faculty_Address, Faculty_City, Faculty_Salary) VALUES (1005, Shivani, Singhania, 4001, 501 street, Kolkata, 42000); 

次の INSERT クエリは、Department_Info テーブルに部門のレコードを挿入します。

 INSERT INTO Department_Info (Dept_ID, Dept_Name, Head_Id) VALUES ( 4001, Arun, 1005); INSERT INTO Department_Info (Dept_ID, Dept_Name, Head_Id) VALUES ( 4002, Zayant, 1009); INSERT INTO Department_Info (Dept_ID, Dept_Name, Head_Id) VALUES ( 4003, Manish, 1007); 

次の SELECT ステートメントは、Faculty_Info テーブルのデータを表示します。

 SELECT * FROM Faculty_Info; 

教員ID 教員名 教員の姓 学部_学科_Id 教員の住所 学部_都市 教員_給与
1001 クマ シャルマ 4001 22 ストリート ニューデリー 20000
1002 ヒヨドリ ロイ 4002 120 ストリート ニューデリー 38000
1004 サウラブ ロイ 4001 221 ストリート ムンバイ 45000
1005 シヴァニ シンガニア 4001 501 ストリート コルカタ 42000
1006 アビナシュ シャルマ 4002 12 ストリート デリー 28000
1007 シャム キスをして 4003 202 ストリート ラクナウ 35000

次のクエリは、Department_Info テーブルから部門のレコードを表示します。

 SELECT * FROM Department_Info; 
SQL での IN の使用方法

次のクエリでは、サブクエリで IN 演算子を使用します。

 SELECT * FROM Faculty_Info WHERE Faculty_Dept_Id IN ( Select Dept_Id FROM Department_Info WHERE Head_Id >= 1007); 

このクエリは、Faculty_Info テーブルの Dept_ID がDepartment_Info テーブルの Dept_Id と一致する学部のレコードを表示します。

出力:

教員ID 教員名 教員の姓 学部_ID 教員の住所 学部_都市 教員_給与
1002 ヒヨドリ ロイ 4002 120 ストリート ニューデリー 38000
1006 アビナシュ シャルマ 4002 12 ストリート デリー 28000
1007 シャム キスをして 4003 202 ストリート ラクナウ 35000

SQL に IN がないものは何ですか?

NOT IN は構造化照会言語のもう 1 つの演算子で、SQL IN 演算子のちょうど反対です。これにより、IN 演算子の括弧を渡さずにテーブルからこれらの値にアクセスできるようになります。

NOT IN 演算子は、INSERT、UPDATE、SELECT、および DELETE SQL クエリで使用できます。

NOT IN 演算子の構文:

 SELECT Column_Name_1, Column_Name_2, Column_Name_3, ......, Column_Name_N FROM Table_Name WHERE Column_Name NOT IN (Value_1, Value_2, Value_3, ......., Value_N); 

SQL ステートメントで NOT IN 演算子を使用する場合は、指定された手順を同じ順序で実行する必要があります。

  1. SQL システムにデータベースを作成します。
  2. データベースに新しいテーブルを作成します。
  3. テーブルにデータを挿入する
  4. 挿入されたデータを表示する
  5. データを表示するには、NOT IN 演算子を使用します。

ここで、最良の SQL 例を使用して、各ステップを 1 つずつ簡単に説明します。

ステップ 1: シンプルな新しいデータベースを作成する

次のクエリでは、新しい 民生_産業 SQLサーバーのデータベース:

 CREATE Database Industry; 

ステップ 2: 新しいテーブルを作成する

次のクエリは、 労働者情報 のテーブル 民生_産業 データベース:

 CREATE TABLE Worker_Info ( Worker_ID INT NOT NULL PRIMARY KEY, Worker_Name VARCHAR (100), Worker_Gender Varchar(20), Worker_Age INT NOT NULL DEFAULT 18, Worker_Address Varchar (80), Worker_Salary INT NOT NULL ); 

ステップ 3: 値を挿入する

次の INSERT クエリは、Worker_Info テーブルにワーカーのレコードを挿入します。

 INSERT INTO Worker_Info (Worker_ID, Worker_Name, Worker_Gender, Worker_Age, Worker_Address, Worker_Salary) VALUES (1001, Arush, Male, Agra, 35000); INSERT INTO Worker_Info (Worker_ID, Worker_Name, Worker_Gender, Worker_Age, Worker_Address, Worker_Salary) VALUES (1002, Bulbul, Female, Lucknow, 42000); INSERT INTO Worker_Info (Worker_ID, Worker_Name, Worker_Gender, Worker_Age, Worker_Address, Worker_Salary) VALUES (1004, Saurabh, Male, 20, Lucknow, 45000); INSERT INTO Worker_Info (Worker_ID, Worker_Name, Worker_Gender, Worker_Age, Worker_Address, Worker_Salary) VALUES (1005, Shivani, Female, Agra, 28000); INSERT INTO Worker_Info (Worker_ID, Worker_Name, Worker_Gender, Worker_Age, Worker_Address, Worker_Salary) VALUES (1006, Avinash, Male, 22, Delhi, 38000); INSERT INTO Worker_Info (Worker_ID, Worker_Name, Worker_Gender, Worker_Age, Worker_Address, Worker_Salary) VALUES (1007, Shyam, Male, Banglore, 20000); 

ステップ 4: テーブルのデータを表示する

次のクエリは、Worker_Info テーブルのデータを表示します。

 SELECT * FROM Worker_Info; 

労働者ID 従業員名 労働者_性別 労働者_年齢 従業員の住所 労働者_給与
1001 クマ 18 アグラ 35000
1002 ヒヨドリ 女性 18 ラクナウ 42000
1004 サウラブ 二十 ラクナウ 45000
1005 シヴァニ 女性 18 アグラ 28000
1006 アビナシュ 22 デリー 38000
1007 シャム 18 バンガロール 20000

ステップ 4: NOT IN 演算子を使用する

次のクエリでは、数値データで NOT IN 演算子を使用します。

 SELECT * FROM Worker_Info WHERE Worker_salary NOT IN (35000, 28000, 38000); 

この SELECT クエリは、給与が NOT IN 演算子に渡されていないすべての従業員を出力に表示します。

上記のステートメントの結果を次の表に示します。

労働者ID 従業員名 労働者_性別 労働者_年齢 従業員の住所 労働者_給与
1002 ヒヨドリ 女性 18 ラクナウ 42000
1004 サウラブ 二十 ラクナウ 45000
1007 シャム 18 バンガロール 20000

次のクエリでは、文字またはテキスト値で NOT IN 論理演算子を使用します。

 SELECT * FROM Worker_Info WHERE Worker_Address NOT IN (Lucknow, Delhi); 

このクエリは、アドレスが NOT IN 演算子で渡されなかったすべてのワーカーのレコードを表示します。

出力:

労働者ID 従業員名 労働者_性別 労働者_年齢 従業員の住所 労働者_給与
1001 クマ 18 アグラ 35000
1005 シヴァニ 女性 18 アグラ 28000
1007 シャム 18 バンガロール 20000