Vodič za MySQL SubQuery s primjerima

Anonim

Što su podupiti?

Podupit je odabrani upit koji se nalazi unutar drugog upita. Unutarnji upit za odabir obično se koristi za određivanje rezultata vanjskog upita za odabir.

Pogledajmo sintaksu podupita -

Česta zamjerka kupaca u MyFlix Video Library je nizak broj naslova filmova. Uprava želi kupiti filmove za kategoriju koja ima najmanje naslova.

Možete koristiti upit poput

SELECT category_name FROM categories WHERE category_id =( SELECT MIN(category_id) from movies);

Daje rezultat

Pogledajmo kako funkcionira ovaj upit

Gore navedeno je oblik podupita za redoslijed . U takvim podupitima unutarnji upit može dati samo JEDAN rezultat. Dopušteni operatori kada rade s podupitima reda su [=,>, =, <=,,! =,]

Pogledajmo još jedan primjer,

Pretpostavimo da želite Imena i Telefonske brojeve članova ljudi koji su unajmili film i trebaju ih vratiti. Kad dobijete Imena i Telefonski broj, pozovite ih da biste ih podsjetili. Možete koristiti upit poput

SELECT full_names,contact_number FROM members WHERE membership_number IN (SELECT membership_number FROM movierentals WHERE return_date IS NULL );

Pogledajmo kako funkcionira ovaj upit

U ovom slučaju, unutarnji upit vraća više rezultata. Navedeni je tip T Table sub-quer y.

Do sada smo vidjeli dva upita, pogledajmo sada primjer trostrukog upita !!!

Pretpostavimo da uprava želi nagraditi člana koji najviše plaća.

Možemo pokrenuti upit poput

Select full_names From members WHERE membership_number = (SELECT membership_number FROM payments WHERE amount_paid = (SELECT MAX(amount_paid) FROM payments));

Gornji upit daje sljedeći rezultat -

Podupiti protiv pridruživanja!

U usporedbi s Joins, potupiti su jednostavni za upotrebu i lako se čitaju. Nisu toliko komplicirani kao Joins

Stoga ih SQL početnici često koriste.

Ali podupiti imaju problema s izvedbom. Korištenje pridruživanja umjesto potupita ponekad vam može povećati performanse do 500 puta.

S obzirom na izbor, preporuča se korištenje PRIDRUŽITI se preko podupita.

Potupiti se trebaju koristiti kao zamjensko rješenje samo ako ne možete koristiti JOIN operaciju da biste postigli gore navedeno

Sažetak

  • Potupiti su ugrađeni upiti unutar drugog upita. Ugrađeni upit poznat je kao unutarnji upit, a upit spremnika poznat je kao vanjski upit.
  • Potupiti su jednostavni za upotrebu, nude veliku fleksibilnost i mogu se lako rastaviti na pojedinačne logičke komponente koje čine upit što je vrlo korisno prilikom testiranja i otklanjanja pogrešaka u upitima.
  • MySQL podržava tri vrste podupita, skalarne, redoslijede i tablice.
  • Skalirani podupiti vraćaju samo jedan redak i jedan stupac.
  • Podupiti za redove vraćaju samo jedan redak, ali mogu imati više stupaca.
  • Podupiti tablice mogu vratiti više redaka kao i stupaca.
  • Podupiti se također mogu koristiti u INSERT, UPDATE i DELETE upitima.
  • Za probleme s performansama, kada je riječ o dobivanju podataka iz više tablica, toplo se preporučuje da se umjesto pridruženih upita koriste JOIN-ovi. Potupiti se trebaju koristiti samo s dobrim razlogom.