MySQL SubQuery bemutató példákkal

Anonim

Mik az alkérdezések?

Az allekérdezés egy kiválasztott lekérdezés, amelyet egy másik lekérdezés tartalmaz. A belső kiválasztási lekérdezést általában a külső választási lekérdezés eredményeinek meghatározására használják.

Vizsgáljuk meg az alkérdezés szintaxisát -

A MyFlix Video Library gyakori vásárlói panasza a filmek alacsony száma. A vezetőség filmeket szeretne vásárolni egy olyan kategóriához, amely a legkevesebb címet viseli.

Használhat olyan lekérdezést, mint

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

Eredményt ad

Lássuk, hogyan működik ez a lekérdezés

A fenti a Rész-al-lekérdezés egyik formája . Ilyen részlekérdezésekben a belső lekérdezés csak EGY eredményt adhat. A megengedett operátorok, amikor soralekérdezésekkel dolgoznak, [=,>, =, <=,,! =,]

Nézzünk meg egy másik példát,

Tegyük fel, hogy azoknak a tagoknak a nevét és telefonszámát szeretné megkapni, akik filmet béreltek és még nem adják vissza őket. Miután megkapta a neveket és a telefonszámokat, felhívja őket, hogy emlékeztetőt adjanak. Használhat olyan lekérdezést, mint

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

Lássuk, hogyan működik ez a lekérdezés

Ebben az esetben a belső lekérdezés egynél több eredményt ad vissza. A fenti a T képes al-lekérdezés típusa .

Eddig két lekérdezést láttunk, most láthatunk egy példát a hármas lekérdezésre !!!

Tegyük fel, hogy a vezetőség a legjobban fizető tagot akarja díjazni.

Futtathatunk egy hasonló lekérdezést

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

A fenti lekérdezés a következő eredményt adja -

Részlekérdezések Vs csatlakozik!

Ha összehasonlítjuk a Joins-szal, akkor az al-lekérdezések egyszerűen használhatók és könnyen olvashatók. Nem olyan bonyolultak, mint a Joins

Ezért gyakran használják az SQL kezdők.

De az alkérdezéseknek teljesítményproblémái vannak. Csatlakozás használata allekérdezés helyett időnként akár 500-szoros teljesítménynövelést is eredményezhet.

Választási lehetőség esetén ajánlott JOIN-t használni egy allekérdezés felett.

Az al-lekérdezéseket csak akkor lehet tartalék megoldásként használni, ha a JOIN műveletet nem tudja használni a fentiek eléréséhez

Összegzés

  • Az al lekérdezések be vannak ágyazva egy másik lekérdezésbe. A beágyazott lekérdezés belső lekérdezés, a tároló lekérdezés pedig külső lekérdezés néven ismert.
  • Az alkérdezések könnyen használhatók, nagy rugalmasságot kínálnak, és könnyen feloszthatók egyetlen logikai komponensre, ami a lekérdezést alkotja, ami nagyon hasznos a lekérdezések tesztelése és hibakeresése során.
  • A MySQL háromféle al lekérdezést támogat, skalár, sor és tábla alkérdezéseket.
  • A skaláris részlekérdezések csak egy sort és egy oszlopot adnak vissza.
  • A soralekérdezések csak egyetlen sort adnak vissza, de több oszlopot is tartalmazhatnak.
  • A tábla-lekérdezések több sort és oszlopot is visszaadhatnak.
  • Az allekérdezések INSERT, UPDATE és DELETE lekérdezésekben is használhatók.
  • Teljesítményproblémák esetén, amikor több táblából kell adatokat gyűjteni, erősen ajánlott a JOIN-okat használni az al lekérdezések helyett. Az alkérdezéseket csak jó indokkal szabad felhasználni.