MySQL SubQuery õpetus koos näidetega

Anonim

Mis on alaküsimused?

Alampäring on valitud päring, mis sisaldub teises päringus. Sisemist valimispäringut kasutatakse tavaliselt välise valikupäringu tulemuste määramiseks.

Vaatame alampäringu süntaksit -

MyFlixi videoteegi klientide tavaline kaebus on filmide vähene arv. Juhtkond soovib osta filme kategooriasse, millel on kõige vähem pealkirju.

Võite kasutada sellist päringut nagu

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

See annab tulemuse

Vaatame, kuidas see päring töötab

Ülaltoodud on rea alampäringu vorm . Sellistes alaküsimustes võib sisemine päring anda ainult ÜHE tulemuse. Rida alampäringutega töötamisel on lubatud operaatorid [=,>, =, <=,,! =,]

Vaatame veel ühte näidet,

Oletame, et soovite filmi rentinud inimeste liikmete nimesid ja telefoninumbreid, kes neid veel tagastama ei pea. Kui olete saanud nimed ja telefoninumbrid, helistate neile meeldetuletuse andmiseks. Võite kasutada sellist päringut nagu

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

Vaatame, kuidas see päring töötab

Sellisel juhul tagastab sisemine päring rohkem kui ühe tulemuse. Eeltoodu on T- võimelise alampäringu tüüp y.

Siiani oleme näinud kahte päringut, näeme nüüd kolmekordse päringu näidet !!!

Oletame, et juhtkond soovib tasustada kõige paremini tasustatud liiget.

Saame käivitada päringu nagu

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

Ülaltoodud päring annab järgmise tulemuse -

Alampäringud liituvad!

Kui võrrelda teenusega Joins, on alampäringuid lihtne kasutada ja neid on lihtne lugeda. Need pole nii keerulised kui Joins

Seetõttu kasutavad SQL-i algajad sageli neid.

Kuid alampäringutel on toimivusprobleeme. Alampäringu asemel liitumise kasutamine võib mõnikord suurendada jõudlust kuni 500 korda.

Valiku korral on soovitatav kasutada JOIN-i alampäringu kohal.

Alampäringuid tuleks kasutada varulahendusena ainult siis, kui te ei saa ülaltoodud saavutamiseks JOIN-toimingut kasutada

Kokkuvõte

  • Alampäringud on sisseehitatud päringud teise päringu sisse. Manustatud päringut tuntakse sisemise päringuna ja konteineripäringut välise päringuna.
  • Alupäringuid on lihtne kasutada, need pakuvad suurt paindlikkust ja neid saab hõlpsasti jagada üksikuteks loogilisteks komponentideks, moodustades päringu, mis on päringute testimisel ja silumisel väga kasulik.
  • MySQL toetab kolme tüüpi alampäringuid: skalaar-, rida- ja tabelipäringud.
  • Skalaarsed alampäringud tagastavad ainult ühe rea ja veeru.
  • Rida alampäringud tagastavad ainult ühe rea, kuid neil võib olla rohkem kui üks veerg.
  • Tabeli alampäringud võivad tagastada nii mitu rida kui ka veerge.
  • Alampäringuid saab kasutada ka päringute INSERT, UPDATE ja DELETE puhul.
  • Toimivusprobleemide korral, kui tegemist on andmete hankimisega mitmest tabelist, on tungivalt soovitatav kasutada JOIN-e alampäringute asemel. Alapäringuid tuleks kasutada ainult mõjuval põhjusel.