このトピックでは、WHERE句を使用して複数の条件を追加する方法を学習します。
まず、WHERE句の概念を理解しましょう。
WHERE句は、テーブルからレコードを取得する際の条件を指定するために使用されます。
WHERE句は通常、SQLのSELECTステートメントで使用されます
SELECTクエリは、WHERE句で指定された条件を満たすレコードのみを表示します
SELECTクエリのWHERE句条件で指定された条件は1つまたは複数存在する可能性があります。
ANDおよびOR演算子は、単一のクエリでWHERE句を使用して複数の条件をチェックするために使用されます。
- WHERE句を使用したAND演算子
WHERE句を使用して条件の間にAND演算子を使用して、SELECTクエリで複数の条件をチェックする場合は常に、クエリで指定された複数の条件のみが満たされたときに結果が表示されます。
構文:
SELECT *FROM table_name WHERE Condition 1 AND Condition 2 [AND Condition 3];
例1:
以下の学生の表を考えてみましょう。以下のすべての例で同じ表を検討します。
Student_RollNo | Student_Name | Student_Gender | Student_MobileNumber | Student_HomeTown | Student_Age | Student_Percentage |
1 | Rohit More | 男性 | 9890786123 | ラクナウ | 23 | 75 |
2 | クナルシャー | 男性 | 7789056784 | チャンディーガル | 20 | 68 |
3 | カルティクゴエンカ | 男性 | 9908743576 | アフマダーバード | 22 | 92 |
4 | アヌパマシャー | 女性 | 8890907656 | チャンディーガル | 24 | 94 |
5 | Snehal Jain | 女性 | 8657983476 | Surat | 21 | 94 |
ここで、この概念を実際に理解するためのいくつかの例を見てみましょう。
mysql> SELECT *FROM students WHERE Student_Gender = "Male" AND Student_HomeTown = "Chandigarh";
出力:
生徒のテーブルには、ロール番号2のレコードが1つだけあります。これは、性別が男性で、出身地がチャンディーガルです。指定された条件のいずれかが満たされていない場合でも、その場合、出力は同じになりません。表示されるレコードは異なる場合があります。または、両方の条件を満たすレコードがない場合、出力が空のセットになる場合があります。
例2:
mysql> SELECT *FROM students WHERE Student_Age = 21 AND Student_Percentage = 94;
出力:
生徒の表には、ロール番号が「5」のレコードが1つだけあり、年齢は「21」、パーセンテージは「94」です。
例3:
mysql> SELECT *FROM students WHERE Student_Gender = "Female" AND Student_HomeTown = "Chandigarh" AND Student_Age = 24;
出力:
学生テーブルのすべてのレコードの中で、ロール番号が「4」のレコードは1つだけで、性別は「男性」、出身地は「チャンディーガル」、年齢は「24」です。これは、3つの条件を満たす唯一のレコードです。
例4:
mysql> SELECT *FROM students WHERE Student_Gender = "Male" AND Student_Name = "Kartik Goenka" AND Student_Percentage = 92;
出力:
学生テーブルのすべてのレコードの中で、ロール番号「3」のレコードが1つだけあり、3つの条件すべてが満たされています。つまり、男性としての性別、名前は「Kartik Goenka」、パーセンテージは「92」です。
- WHERE句を使用したOR演算子
WHERE句のある条件の間にOR演算子を使用して、SELECTクエリで複数の条件をチェックする場合は常に、クエリに記述された他のすべての条件の中で少なくとも1つの条件が満たされたときに結果が表示されます。
構文:
SELECT *FROM table_name WHERE Condition 1 OR Condition 2 [OR Condition 3];
例1:
mysql> SELECT *FROM students WHERE Student_Gender = "Male" OR Student_HomeTown = "Chandigarh";
出力:
学生の表には、ロール番号1、2、3、4の4つのレコードがあり、性別は男性、出身地はチャンディーガルです。指定された条件が満たされた場合でも、そのレコードは出力の一部と見なされます。場合によっては、いずれかの条件を満たすレコードがない場合、出力は空のセットになることがあります。
例2:
mysql> SELECT *FROM students WHERE Student_Age = 21 OR Student_Percentage = 94;
出力:
生徒の表には2つのレコードロール番号「4」と「5」があり、年齢は「21」、パーセンテージは「94」です。
例3:
mysql> SELECT *FROM students WHERE Student_Gender = "Female" OR Student_HomeTown = "Chandigarh" OR Student_Age = 24;
出力:
学生テーブルのすべてのレコードの中に、ロール番号が「2」、「4」、「5」の3つのレコードがあり、どちらの性別も「女性」です。 「チャンディーガル」または年齢が「24」に等しい故郷。これらは、3つの条件を満たすレコードです。
例4:
mysql> SELECT *FROM students WHERE Student_Gender = "Male" OR Student_Name = "Kartik Goenka" OR Student_Percentage = 92;
出力:
学生テーブルのすべてのレコードの中に、ロール番号が「1」、「2」、「3」の3つのレコードがあり、3つの条件のいずれかが満たされています。つまり、男性としての性別、名前は「KartikGoenka」と同じです。またはパーセンテージは「92」に等しい。
- 単一のクエリでWHERE句を使用したANDおよびOR演算子
SELECTステートメントを使用したWHERE句クエリでは、単一のクエリでAND演算子とOR演算子を組み合わせて使用することもできます。単一のクエリでAND演算子とOR演算子の組み合わせを使用する目的は、より高いレベルの複雑な条件をテストすることです。
構文:
SELECT *FROM table_name WHERE Condition 1 AND/OR Condition 2 [AND/OR Condition 3];
例1:
mysql> SELECT *FROM students WHERE Student_Gender = "Female" AND Student_HomeTown = "Chandigarh" OR Student_Age = 24;
出力:
クエリの条件によると、レコードの性別は「女性」、出身地は「チャンディーガル」である必要があります。学生の年齢は「24歳」である場合とそうでない場合があります。したがって、これらの条件を満たすロール番号「4」のレコードは1つだけです。性別が「女性」で「チャンディーガル」以外の出身地であるレコード、またはその逆のレコードであっても、そのレコードは出力に含まれません。
例2:
SELECT * FROM students WHERE Student_Gender = "Female" OR Student_HomeTown = "Chandigarh" AND Student_Age = 24;
出力:
クエリの条件に応じて、レコードの性別は「女性」、出身地は「チャンディーガル」のいずれかである必要があります。学生の年齢は「24」以外であってはなりません。したがって、これらの条件を満たすロール番号「4」と「5」の2つのレコードがあります。
例3:
mysql> SELECT *FROM students WHERE Student_Gender = "Male" AND Student_HomeTown = "Lucknow" OR Student_Age = 23 AND Student_Percentage = 75;
出力:
生徒のテーブルには、性別が「男性」、出身地が「ラクナウ」であるレコードが1つだけあり、生徒の割合は「75」である必要があります。学生の年齢は23歳または23歳以外です。
例4:
mysql> SELECT *FROM students WHERE Student_Gender = "Male" OR Student_HomeTown = "Lucknow" AND Student_Age = 23 OR Student_Percentage = 75;
出力:
学生の表には、性別が「男性」、年齢が「23」の3つのレコードがあります。故郷は「ラクナウ」である場合とそうでない場合があります。また、パーセンテージは「75」である場合とそうでない場合があります。