Vadnica MySQL SubQuery s primeri

Anonim

Kaj so podpoizvedbe?

Podpoizvedba je poizvedba za izbiro, ki je vsebovana znotraj druge poizvedbe. Notranja izbirna poizvedba se običajno uporablja za določanje rezultatov zunanje izbirne poizvedbe.

Poglejmo v sintakso podpoizvedbe -

Pogosta pritožba strank v videoteki MyFlix je majhno število naslovov filmov. Vodstvo želi kupiti filme za kategorijo z najmanjšim številom naslovov.

Uporabite lahko poizvedbo kot

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

To daje rezultat

Poglejmo, kako deluje ta poizvedba

Zgornje je oblika podpoizvedbe vrstice . V takih podpoizvedbah lahko notranja poizvedba daje samo EN rezultat. Dovoljeni operatorji pri delu s podpoizvedbami vrstic so [=,>, =, <=,,! =,]

Poglejmo še en primer,

Recimo, da želite imena in telefonske številke članov ljudi, ki so si izposodili film in jih še ne vrnejo. Ko prejmete imena in telefonsko številko, jih pokličete, da vas opomnijo. Uporabite lahko poizvedbo kot

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

Poglejmo, kako deluje ta poizvedba

V tem primeru notranja poizvedba vrne več kot en rezultat. Zgoraj je navedena vrsta T -pod-poizvedbe y.

Do zdaj smo videli dve poizvedbi, zdaj si oglejmo primer trojne poizvedbe !!!

Recimo, da želi vodstvo nagraditi najbolje plačanega člana.

Lahko izvedemo poizvedbo, kot je

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

Zgornja poizvedba daje naslednji rezultat -

Podpoizvedbe vs pridružitve!

Če jih primerjate z Joins, so poizvedbe enostavne za uporabo in enostavne za branje. Niso tako zapleteni kot Joins

Zato jih začetniki SQL pogosto uporabljajo.

Toda podpoizvedbe imajo težave z zmogljivostjo. Uporaba združevanja namesto podpoizvedbe vam lahko včasih poveča do 500-krat večjo zmogljivost.

Glede na izbiro je priporočljivo uporabiti JOIN nad podpoizvedbo.

Podpoizvedbe je treba uporabiti kot nadomestno rešitev le, če za dosego zgoraj navedenega ne morete uporabiti JOIN operacije

Povzetek

  • Podpoizvedbe so vdelane poizvedbe znotraj druge poizvedbe. Vdelana poizvedba je znana kot notranja poizvedba, poizvedba vsebnika pa zunanja poizvedba.
  • Podpoizvedbe so enostavne za uporabo, nudijo veliko prilagodljivost in jih je mogoče enostavno razdeliti na posamezne logične komponente, ki sestavljajo poizvedbo, kar je zelo koristno pri testiranju in odpravljanju napak pri poizvedbah.
  • MySQL podpira tri vrste podpoizvedb, skalarne, vrstne in tabele.
  • Podpoizvedbe skalarja vrnejo samo eno vrstico in en stolpec.
  • Podpoizvedbe vrstic vrnejo samo eno vrstico, lahko pa imajo več kot en stolpec.
  • Podpoizvedbe tabele lahko vrnejo več vrstic in stolpcev.
  • Podpoizvedbe se lahko uporabljajo tudi v poizvedbah INSERT, UPDATE in DELETE.
  • Pri težavah z zmogljivostjo je pri pridobivanju podatkov iz več tabel močno priporočljivo, da namesto podpoizvedb uporabite JOIN. Podpoizvedbe je dovoljeno uporabljati samo z dobrim razlogom.