MySQL SubQuery apmācība ar piemēriem

Anonim

Kas ir apakšvaicājumi?

Apakšvaicājums ir atlasīts vaicājums, kas atrodas citā vaicājumā. Iekšējais atlases vaicājums parasti tiek izmantots, lai noteiktu ārējā atlases vaicājuma rezultātus.

Apskatīsim apakšvaicājuma sintaksi -

Bieža klientu sūdzība MyFlix video bibliotēkā ir mazais filmu nosaukumu skaits. Vadība vēlas iegādāties filmas kategorijai, kurai ir vismazāk nosaukumu.

Varat izmantot tādu vaicājumu kā

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

Tas dod rezultātu

Apskatīsim, kā darbojas šis vaicājums

Iepriekš minētais ir rindas apakšvaicājuma veids . Šādos apakšvaicājumos iekšējais vaicājums var dot tikai VIENU rezultātu. Pieļaujamie operatori, strādājot ar rindu apakšvaicājumiem, ir [=,>, =, <=,,! =,]

Apskatīsim citu piemēru,

Pieņemsim, ka vēlaties to cilvēku locekļu vārdus un tālruņu numurus, kuri ir nomājuši filmu un vēl tos neatdod. Kad esat saņēmis vārdus un tālruņa numurus, jūs tos izsaucat, lai sniegtu atgādinājumu. Varat izmantot tādu vaicājumu kā

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

Apskatīsim, kā darbojas šis vaicājums

Šajā gadījumā iekšējais vaicājums atgriež vairākus rezultātus. Iepriekš minētais ir T veida apakšvaicājuma y tips .

Līdz šim mēs esam redzējuši divus vaicājumus, ļaujiet redzēt trīsvietīgu vaicājumu piemēru !!!

Pieņemsim, ka vadība vēlas apbalvot biedru, kas visvairāk maksā.

Mēs varam izpildīt tādu vaicājumu kā

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

Iepriekš minētais vaicājums dod šādu rezultātu -

Apakšvaicājumi Vs pievienojas!

Salīdzinot ar programmu Joins, apakšvaicājumus ir viegli lietot un viegli lasīt. Viņi nav tik sarežģīti kā Joins

Tāpēc SQL iesācēji tos bieži izmanto.

Bet apakšvaicājumiem ir problēmas ar veiktspēju. Pievienošanās izmantošana apakšvaicājuma vietā dažkārt var palielināt veiktspēju līdz pat 500 reizēm.

Ņemot vērā izvēli, apakšvaicājumam ieteicams izmantot JOIN.

Apakšvaicājumi jāizmanto kā rezerves risinājums tikai tad, ja nevarat izmantot JOIN darbību, lai sasniegtu iepriekš minēto

Kopsavilkums

  • Apakšvaicājumi ir iegulti vaicājumi citā vaicājumā. Iegultais vaicājums ir pazīstams kā iekšējais vaicājums, un konteinera vaicājums ir pazīstams kā ārējais vaicājums.
  • Aptaujas ir viegli lietojamas, piedāvā lielu elastību un tās var viegli sadalīt atsevišķos loģiskos komponentos, veidojot vaicājumu, kas ir ļoti noderīgi, pārbaudot un atkļūdojot vaicājumus.
  • MySQL atbalsta trīs veidu apakšvaicājumus, skalāros, rindās un tabulās.
  • Skalāru apakšvaicājumi atgriež tikai vienu rindu un vienu kolonnu.
  • Rindu apakšvaicājumi atgriež tikai vienu rindu, bet tiem var būt vairākas kolonnas.
  • Tabulas apakšvaicājumi var atgriezt vairākas rindas, kā arī kolonnas.
  • Apakšvaicājumus var izmantot arī vaicājumos INSERT, UPDATE un DELETE.
  • Ja rodas problēmas ar veiktspēju, kad jāiegūst dati no vairākām tabulām, ir ļoti ieteicams apakšvaicājumu vietā izmantot JOIN. Apakšvaicājumi jāizmanto tikai pamatota iemesla dēļ.