MySQL WHERE Klausul: AND, OR, IN, NOT IN Frågeexempel
Vad är WHERE-klausul i MySQL?
WHERE in MySQL är ett nyckelord som används för att ange de exakta kriterierna för data eller rader som kommer att påverkas av den angivna SQL-satsen. WHERE-satsen kan användas med SQL-satser som INSERT, UPDATE, SELECT och DELETE för att filtrera poster och utföra olika operationer på data.
Vi tittade på hur man frågar efter data från en databas med hjälp av SELECT-satsen i föregående handledning. SELECT-satsen returnerade alla resultat från den efterfrågade databastabellen.
Det är dock tillfällen då vi vill begränsa frågeresultaten till ett specificerat tillstånd. WHERE-satsen i SQL är praktisk i sådana situationer.

WHERE-sats Syntax
Den grundläggande syntaxen för WHERE-satsen när den används i en MySQL SELECT WHERE-satsen är som följer.
SELECT * FROM tableName WHERE condition;
HÄR
- "VÄLJ * FRÅN tabellnamn" är standarden SELECT-sats
- "VAR" är nyckelordet som begränsar vårt urval av sökfrågor och resultat "skick" är filtret som ska användas på resultaten. Filtret kan vara ett intervall, ett enda värde eller en underfråga.
Låt oss nu titta på en praktiskt exempel.
Anta att vi vill få en medlems personuppgifter från medlemstabellen med tanke på medlemsnummer 1, vi skulle använda följande skript för att uppnå det.
SELECT * FROM `members` WHERE `membership_number` = 1;
Exekvera skriptet ovan i MySQL arbetsbänk på "myflixdb" skulle ge följande resultat.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | janetjones@yagoo.cm |
WHERE-klausul kombinerad med – AND LOGISK Operator
WHERE-tillståndet i MySQL när den används tillsammans med den logiska operatorn AND, exekveras endast om ALLA angivna filterkriterier är uppfyllda.
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
WHERE-klausul kombinerad med – OR LOGISK Operator
SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
1 | Pirates of the Caribean 4 | Rob Marshall | 2011 | 1 |
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
WHERE-klausul kombinerad med – IN Nyckelord
SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);
Exekvera skriptet ovan i MySQL arbetsbänk mot "myflixdb" ger följande resultat.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | janetjones@yagoo.cm |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | rm@tstreet.com |
WHERE-klausul kombinerad med – INTE I Nyckelord
SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);
Exekvera skriptet ovan i MySQL arbetsbänk mot "myflixdb" ger följande resultat.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
WHERE-klausul kombinerad med – JÄMFÖRELSE Operatorer
= Lika med
SELECT * FROM `members` WHERE `gender` = 'Female';
Exekvera skriptet ovan i MySQL arbetsbänk mot "myflixdb" ger följande resultat.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | janetjones@yagoo.cm |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
> Större än
payment_id | membership_number | payment_date | description | amount_paid | external_reference_number |
---|---|---|---|---|---|
1 | 1 | 23-07-2012 | Movie rental payment | 2500 | 11 |
3 | 3 | 30-07-2012 | Movie rental payment | 6000 | NULL |
< > Inte lika med
SELECT * FROM `movies` WHERE `category_id`<> 1;
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
5 | Daddy's Little Girls | NULL | 2007 | 8 |
6 | Angels and Demons | NULL | 2007 | 6 |
7 | Davinci Code | NULL | 2007 | 6 |
9 | Honey mooners | John Schultz | 2005 | 8 |
Sammanfattning
- SQL WHERE-satsen används för att begränsa antalet rader som påverkas av en SELECT, UPDATE eller DELETE-fråga.
- WHERE-villkoret i SQL kan användas tillsammans med logiska operatorer som AND och OR, jämförelseoperatorer som ,= etc.
- När den används med AND logisk operatör, måste alla kriterier vara uppfyllda.
- När den används med den logiska operatorn OR måste något av kriterierna uppfyllas.
- Nyckelordet IN används för att välja rader som matchar en lista med värden.
Hjärngymnastik
SELECT * FROM `movierentals` WHERE `return_date` < '2012-06-25' AND movie_returned = 0;
Exekvera skriptet ovan i MySQL arbetsbänk ger följande resultat.
reference_number | transaction_date | return_date | membership_number | movie_id | movie_returned |
---|---|---|---|---|---|
14 | 21-06-2012 | 24-06-2012 | 2 | 2 | 0 |