MySQL WHERE-klausul: AND, OR, IN, NOT IN Spørringseksempel
Hva er WHERE-klausul i MySQL?
HVOR punkt in MySQL er et nøkkelord som brukes til å spesifisere de eksakte kriteriene for data eller rader som vil bli påvirket av den angitte SQL-setningen. WHERE-leddet kan brukes med SQL-setninger som INSERT, UPDATE, SELECT og DELETE for å filtrere poster og utføre ulike operasjoner på dataene.
Vi så på hvordan du kan spørre etter data fra en database ved å bruke SELECT-setningen i forrige veiledning. SELECT-setningen returnerte alle resultatene fra den spørrede databasetabellen.
Det er imidlertid tidspunkter da vi ønsker å begrense søkeresultatene til en spesifisert tilstand. WHERE-klausulen i SQL er nyttig i slike situasjoner.

WHERE-klausul Syntaks
Den grunnleggende syntaksen for WHERE-leddet når den brukes i en MySQL SELECT WHERE-setningen er som følger.
SELECT * FROM tableName WHERE condition;
HER
- "VELG * FRA tabellnavn" er standarden SELECT-setning
- "HVOR" er søkeordet som begrenser vårt utvalgte søkeresultatsett og "betingelse" er filteret som skal brukes på resultatene. Filteret kan være et område, enkeltverdi eller underspørring.
La oss nå se på en praktisk eksempel.
Anta at vi ønsker å få et medlems personlige detaljer fra medlemstabellen gitt medlemsnummer 1, vil vi bruke følgende skript for å oppnå det.
SELECT * FROM `members` WHERE `membership_number` = 1;
Utfører skriptet ovenfor i MySQL arbeidsbenk på "myflixdb" vil gi følgende resultater.
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 kombinert med – OG LOGISK Operator
WHERE-tilstanden i MySQL når den brukes sammen med den logiske AND-operatoren, utføres kun hvis ALLE filterkriterier som er spesifisert er oppfylt.
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 kombinert 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 kombinert med – IN søkeord
SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);
Utfører skriptet ovenfor i MySQL arbeidsbenk mot "myflixdb" gir følgende resultater.
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 kombinert med – IKKE I søkeord
SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);
Utfører skriptet ovenfor i MySQL arbeidsbenk mot "myflixdb" gir følgende resultater.
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 kombinert med – SAMMENLIGNING Operatorer
= Lik
SELECT * FROM `members` WHERE `gender` = 'Female';
Utfører skriptet ovenfor i MySQL arbeidsbenk mot "myflixdb" gir følgende resultater.
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 enn
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 |
< > Ikke lik
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 |
Sammendrag
- SQL WHERE-leddet brukes til å begrense antall rader som påvirkes av en SELECT, UPDATE eller SLETT forespørsel.
- WHERE-betingelsen i SQL kan brukes sammen med logiske operatorer som AND og OR, sammenligningsoperatorer som ,= osv.
- Når den brukes med AND logisk operatør, må alle kriteriene være oppfylt.
- Når den brukes med den logiske OR-operatoren, må alle kriteriene oppfylles.
- Nøkkelordet IN brukes til å velge rader som samsvarer med en liste med verdier.
Hjernetrim
SELECT * FROM `movierentals` WHERE `return_date` < '2012-06-25' AND movie_returned = 0;
Utfører skriptet ovenfor i MySQL arbeidsbenk gir følgende resultater.
reference_number | transaction_date | return_date | membership_number | movie_id | movie_returned |
---|---|---|---|---|---|
14 | 21-06-2012 | 24-06-2012 | 2 | 2 | 0 |