W tym temacie dowiemy się, jak dodać wiele warunków za pomocą klauzuli WHERE.
Najpierw zrozummy pojęcie klauzuli WHERE.
Klauzula WHERE służy do określenia warunku podczas pobierania rekordów z tabeli.
Klauzula WHERE jest zwykle używana z instrukcją SELECT w SQL
Zapytanie SELECT wyświetli tylko rekordy spełniające warunek określony w klauzuli WHERE
W warunku klauzuli WHERE zapytania SELECT może być określony jeden lub więcej warunków.
Operatory AND i OR są używane do sprawdzania wielu warunków przy użyciu klauzuli WHERE w pojedynczym zapytaniu.
- Operator AND z klauzulą WHERE
Ilekroć operator AND zostanie użyty pomiędzy warunkami z klauzulą WHERE w celu sprawdzenia wielu warunków w zapytaniu SELECT, wyniki są wyświetlane, gdy spełniony jest tylko więcej niż jeden warunek podany w zapytaniu.
Składnia:
SELECT *FROM table_name WHERE Condition 1 AND Condition 2 [AND Condition 3];
Przykład 1:
Rozważ tabelę uczniów podaną poniżej. Tę samą tabelę rozważymy we wszystkich poniższych przykładach.
Student_RollNo | Nazwa_ucznia | Płeć_ucznia | Student_MobileNumber | Student_HomeTown | Wiek_ucznia | Student_Percentage |
1 | Rohit Więcej | Mężczyzna | 9890786123 | Szczęśliwy | 23 | 75 |
2 | Kunal Shah | Mężczyzna | 7789056784 | Chandigarh | 20 | 68 |
3 | Kartik Goenka | Mężczyzna | 9908743576 | Ahemdabad | 22 | 92 |
4 | Szach Anupamy | Kobieta | 8890907656 | Chandigarh | 24 | 94 |
5 | Dżin Snehal | Kobieta | 8657983476 | Uwaga | 21 | 94 |
Zobaczmy teraz kilka przykładów, aby praktycznie zrozumieć tę koncepcję.
mysql> SELECT *FROM students WHERE Student_Gender = "Male" AND Student_HomeTown = "Chandigarh";
Wyjście:
W tabeli uczniów jest tylko jeden rekord z numerem 2, który określa płeć jako męską i miasto rodzinne jak Chandigarh. Nawet jeśli którykolwiek z określonych warunków nie jest spełniony, w takim przypadku dane wyjściowe nie będą takie same. Wyświetlane rekordy/rekordy będą różne, aw niektórych przypadkach dane wyjściowe mogą być pustym zestawem, jeśli żaden rekord nie spełnia obu warunków.
Przykład 2:
mysql> SELECT *FROM students WHERE Student_Age = 21 AND Student_Percentage = 94;
Wyjście:
Jest tylko jeden rekord z numerem rzutu „5” w tabeli uczniów, który ma wiek równy „21” i procent równy „94”.
Przykład 3:
mysql> SELECT *FROM students WHERE Student_Gender = "Female" AND Student_HomeTown = "Chandigarh" AND Student_Age = 24;
Wyjście:
Wśród wszystkich rekordów w tabeli uczniów jest tylko jeden rekord z numerem „4”, w którym płeć to „mężczyzna”, miasto rodzinne to „Chandigarh”, a wiek to „24”. To jedyny rekord, który spełnia wszystkie trzy warunki.
Przykład 4:
mysql> SELECT *FROM students WHERE Student_Gender = "Male" AND Student_Name = "Kartik Goenka" AND Student_Percentage = 92;
Wyjście:
Wśród wszystkich rekordów w tabeli uczniów jest tylko jeden rekord z numerem rzutu „3”, w którym spełnione są wszystkie trzy warunki, tj. płeć jako męska, imię równe „Kartik Goenka” i procent równy „92”.
- Operator OR z klauzulą WHERE
Ilekroć operator OR zostanie użyty pomiędzy warunkami z klauzulą WHERE, aby sprawdzić wiele warunków w zapytaniu SELECT, wyniki są wyświetlane, gdy spełniony jest co najmniej jeden warunek spośród wszystkich innych warunków zapisanych w zapytaniu.
Składnia:
SELECT *FROM table_name WHERE Condition 1 OR Condition 2 [OR Condition 3];
Przykład 1:
mysql> SELECT *FROM students WHERE Student_Gender = "Male" OR Student_HomeTown = "Chandigarh";
Wyjście:
W tabeli uczniów znajdują się cztery rekordy z numerem 1, 2, 3 i 4, które mają płeć jako męską lub miasto rodzinne jako Chandigarh. Nawet jeśli zostaną spełnione określone warunki, ten rekord zostanie uznany za część danych wyjściowych. W niektórych przypadkach wynik może być pustym zestawem, jeśli żaden rekord nie spełnia żadnego z warunków.
Przykład 2:
mysql> SELECT *FROM students WHERE Student_Age = 21 OR Student_Percentage = 94;
Wyjście:
W tabeli uczniów znajdują się dwa rekordy o numerach „4” i „5”, które mają wiek równy „21” lub procent równy „94”.
Przykład 3:
mysql> SELECT *FROM students WHERE Student_Gender = "Female" OR Student_HomeTown = "Chandigarh" OR Student_Age = 24;
Wyjście:
Wśród wszystkich rekordów w tabeli uczniów znajdują się trzy rekordy z numerem rolki „2”, „4” i „5”, które mają płeć jako „kobieta”; rodzinne miasto jako „Chandigarh” lub wiek równy „24”. Są to zapisy, które spełniają jeden z trzech warunków.
Przykład 4:
mysql> SELECT *FROM students WHERE Student_Gender = "Male" OR Student_Name = "Kartik Goenka" OR Student_Percentage = 92;
Wyjście:
Wśród wszystkich rekordów w tabeli uczniów znajdują się trzy rekordy z numerami rzutów „1”, „2” i „3”, w których spełniony jest jeden z trzech warunków, tj. płeć jako mężczyzna, imię równe „Kartik Goenka” lub procent równy „92”.
- Operator AND i OR z klauzulą WHERE w pojedynczym zapytaniu
W zapytaniu z klauzulą WHERE z instrukcją SELECT możemy również użyć kombinacji operatorów AND i OR w jednym zapytaniu. Celem użycia kombinacji operatorów AND i OR w jednym zapytaniu jest przetestowanie wyższego poziomu skomplikowanych warunków.
Składnia:
SELECT *FROM table_name WHERE Condition 1 AND/OR Condition 2 [AND/OR Condition 3];
Przykład 1:
mysql> SELECT *FROM students WHERE Student_Gender = "Female" AND Student_HomeTown = "Chandigarh" OR Student_Age = 24;
Wyjście:
Zgodnie z warunkami w zapytaniu, rekord powinien mieć płeć jako „kobieta”, a miasto rodzinne jako „Chandigarh”. Wiek ucznia może, ale nie musi, wynosić „24”. Jest więc tylko jeden rekord z numerem rolki „4”, który spełnia te warunki. Nawet jeśli jakikolwiek rekord ma płeć jako „kobieta” i miasto rodzinne inne niż „Chandigarh” lub odwrotnie, to ten rekord nie zostanie uwzględniony w danych wyjściowych.
Przykład 2:
SELECT * FROM students WHERE Student_Gender = "Female" OR Student_HomeTown = "Chandigarh" AND Student_Age = 24;
Wyjście:
Zgodnie z warunkami w zapytaniu rekord powinien zawierać płeć jako „kobieta” lub miasto rodzinne jako „Chandigarh”. Wiek ucznia nie powinien być inny niż „24 lata”. Tak więc istnieją dwa rekordy z numerem rolki „4” i „5”, które spełniają te warunki.
Przykład 3:
mysql> SELECT *FROM students WHERE Student_Gender = "Male" AND Student_HomeTown = "Lucknow" OR Student_Age = 23 AND Student_Percentage = 75;
Wyjście:
W tabeli uczniów jest tylko jeden rekord, w którym płeć to „mężczyzna”, miasto rodzinne to „Lucknow”, a odsetek uczniów powinien wynosić „75”. Wiek ucznia może wynosić 23 lub inny niż 23 lata.
Przykład 4:
mysql> SELECT *FROM students WHERE Student_Gender = "Male" OR Student_HomeTown = "Lucknow" AND Student_Age = 23 OR Student_Percentage = 75;
Wyjście:
W tabeli uczniów znajdują się trzy rekordy, w których płeć to „mężczyzna”, a wiek „23”. Rodzinnym miastem może, ale nie musi być „Lucknow”. Ponadto procent może, ale nie musi, wynosić „75”.