Klavzula MySQL WHERE: IN, ALI, IN, NOT IN Primer poizvedbe

Kazalo:

Anonim

Kaj je klavzula WHERE v MySQL?

Klavzula WHERE v MySQL je ključna beseda, ki se uporablja za določanje natančnih meril podatkov ali vrstic, na katere bo naveden stavek SQL vplival. Stavek WHERE je mogoče uporabiti s stavki SQL, kot so INSERT, UPDATE, SELECT in DELETE, za filtriranje zapisov in izvajanje različnih operacij s podatki.

Preučili smo, kako poizvedovati po podatkih iz baze podatkov z uporabo stavka SELECT v prejšnji vadnici. Stavek SELECT je vrnil vse rezultate iz poizvedbene tabele baze podatkov.

So pa časi, ko želimo rezultate poizvedbe omejiti na določen pogoj. Klavzula WHERE v SQL je v takšnih primerih priročna.

Klavzula WHERE v MySQL

Klavzula WHERE Sintaksa

Osnovna sintaksa za stavek WHERE, kadar se uporablja v stavku MySQL SELECT WHERE, je naslednja.

SELECT * FROM tableName WHERE condition;

TUKAJ

  • "SELECT * FROM tableName" je standardni stavek SELECT
  • "KJE" je ključna beseda, ki omejuje naš nabor rezultatov izbrane poizvedbe, "pogoj" pa je filter, ki se uporabi za rezultate. Filter je lahko obseg, ena vrednost ali podpoizvedba.

Oglejmo si zdaj praktični primer .

Recimo, da želimo dobiti članske osebne podatke iz tabele članov glede na številko članstva 1, bi za to uporabili naslednji skript.

SELECT * FROM `members` WHERE `membership_number` = 1;

Izvedba zgornjega skripta v delovnem okolju MySQL na "myflixdb" bi dala naslednje rezultate.

 
membership_number full_names gender date_of_birth physical_address postal_address contct_number email
1 Janet Jones Female 21-07-1980 First Street Plot No 4 Private Bag 0759 253 542 This email address is being protected from spambots. You need JavaScript enabled to view it.

Klavzula WHERE v kombinaciji z - IN LOGICAL Operator

Pogoj WHERE v MySQL, kadar se uporablja skupaj z logičnim operatorjem AND, se izvede le, če so izpolnjeni VSE navedeni kriteriji filtriranja. Oglejmo si zdaj praktični primer - če želimo dobiti seznam vseh filmov kategorije 2, ki so bili izdani leta 2008, bi uporabili spodnji scenarij, da to dosežemo.

SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;

Izvedba zgornjega skripta v delovnem okolju MySQL v primerjavi z "myflixdb" povzroči naslednje rezultate.

 
movie_id title director year_released category_id
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2

Klavzula WHERE v kombinaciji z - OR LOGICAL Operator

Klavzula WHERE, kadar se uporablja skupaj z operaterjem OR, se izvede le, če je izpolnjeno katero koli ali celotno določeno merilo filtra. Naslednji scenarij vsebuje vse filme v kategoriji 1 ali kategoriji 2
SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;

Izvedba zgornjega skripta v delovnem okolju MySQL v primerjavi z "myflixdb" povzroči naslednje rezultate.

 
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

Stavek WHERE v kombinaciji s ključno besedo - IN

Stavek WHERE v MySQL, kadar se uporablja skupaj s ključno besedo IN, vpliva samo na vrstice, katerih vrednosti se ujemajo s seznamom vrednosti, navedenim v ključni besedi IN. Izjava MySQL IN pomaga zmanjšati število stavkov OR, ki jih boste morda morali uporabiti. Naslednja poizvedba MySQL WHERE IN daje vrstice, v katerih je članstvo_številka 1, 2 ali 3
SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);

Izvedba zgornjega skripta v delovnem okolju MySQL v primerjavi z "myflixdb" povzroči naslednje rezultate.

 
membership_number full_names gender date_of_birth physical_address postal_address contct_number email
1 Janet Jones Female 21-07-1980 First Street Plot No 4 Private Bag 0759 253 542 This email address is being protected from spambots. You need JavaScript enabled to view it.
2 Janet Smith Jones Female 23-06-1980 Melrose 123 NULL NULL This email address is being protected from spambots. You need JavaScript enabled to view it.
3 Robert Phil Male 12-07-1989 3rd Street 34 NULL 12345 This email address is being protected from spambots. You need JavaScript enabled to view it.

Stavek WHERE v kombinaciji z - NOT IN Keyword

Stavek WHERE, kadar se uporablja skupaj s ključno besedo NOT IN, NE vpliva na vrstice, katerih vrednosti se ujemajo s seznamom vrednosti iz ključne besede NOT IN. Naslednja poizvedba daje vrstice, v katerih število_članic NI 1, 2 ali 3
SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);

Izvedba zgornjega skripta v delovnem okolju MySQL v primerjavi z "myflixdb" povzroči naslednje rezultate.

 
membership_number full_names gender date_of_birth physical_address postal_address contct_number email
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL

Klavzula WHERE v kombinaciji z - OPERATERJI

Operatorje primerjave z manj kot (), enako (=), ne z () je mogoče uporabiti s stavkom WHERE

= Enako

Naslednji skript dobi vse ženske člane iz tabele članov z uporabo enakega operatorja primerjave.
SELECT * FROM `members` WHERE `gender` = 'Female';

Izvedba zgornjega skripta v delovnem okolju MySQL v primerjavi z "myflixdb" povzroči naslednje rezultate.

 
membership_number full_names gender date_of_birth physical_address postal_address contct_number email
1 Janet Jones Female 21-07-1980 First Street Plot No 4 Private Bag 0759 253 542 This email address is being protected from spambots. You need JavaScript enabled to view it.
2 Janet Smith Jones Female 23-06-1980 Melrose 123 NULL NULL This email address is being protected from spambots. You need JavaScript enabled to view it.
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL

> Več kot

Naslednji skript dobi iz plačila tabele vsa plačila, ki presegajo 2.000. IZBERITE * OD `plačila` KJE` plačano_znesek`> 2000; Izvedba zgornjega skripta v delovnem okolju MySQL v primerjavi z "myflixdb" povzroči naslednje rezultate.
 
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

<> Ni enako

Naslednji scenarij vsebuje vse filme, katerih id kategorije ni 1.
SELECT * FROM `movies` WHERE `category_id`<> 1;
Izvedba zgornjega skripta v delovnem okolju MySQL v primerjavi z "myflixdb" povzroči naslednje rezultate.
 
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

Povzetek

  • Stavek SQL WHERE se uporablja za omejitev števila vrstic, na katere vpliva poizvedba SELECT, UPDATE ali DELETE.
  • Pogoj WHERE v SQL se lahko uporablja skupaj z logičnimi operatorji, kot sta AND in OR, primerjalnimi operaterji, kot je, = itd.
  • Pri uporabi z logičnim operatorjem AND morajo biti izpolnjeni vsi kriteriji.
  • Če se uporablja z logičnim operatorjem OR, mora biti izpolnjeno katero koli merilo.
  • Ključna beseda IN se uporablja za izbiro vrstic, ki se ujemajo s seznamom vrednosti.

Mozgalica Predpostavimo, da želimo dobiti seznam izposojenih filmov, ki niso bili vrnjeni pravočasno 25. 6. 2012. Za to lahko uporabimo stavek SQL WHERE skupaj z operatorjem manj kot primerjavo in logičnim operatorjem AND.

SELECT * FROM `movierentals` WHERE `return_date` < '2012-06-25' AND movie_returned = 0;
Izvedba zgornjega skripta v delovnem okolju MySQL daje naslednje rezultate.
 
reference_number transaction_date return_date membership_number movie_id movie_returned
14 21-06-2012 24-06-2012 2 2 0