„MySQL MariaDB“

„MySQL Subqueries“

„MySQL Subqueries“
Potinklis yra SQL užklausa didesnėje užklausoje, kuri yra rekursyvi, arba antrinė užklausa laikoma vidine užklausa. Priešingai, išorinė užklausa vadinama užklausa, apimanti antrinę užklausą. „MySQL“ užklausą galima įterpti į užklausas, įskaitant „SELECT“, „INSERT“, „UPDATE“ arba „DELETE“. Be to, kitoje užklausoje gali būti įdėtas porūšis. Frazė subquery turėtų būti uždaryta skliausteliuose, kad ir kur ji būtų naudojama. Mes išmokysime, kaip ir kada naudoti „MySQL“ subquery sudarant sudėtingas užklausas ir apibūdinant susijusios subquery idėją. Darbalaukyje atidarykite komandinės eilutės apvalkalą ir parašykite slaptažodį, kad galėtumėte pradėti jį naudoti. Paspauskite „Enter“ ir tęskite.

Subquery per vieno stalo įrašus:

Duomenų bazės duomenyse sukurkite lentelę pavadinimu „gyvūnai“.„Pridėkite toliau pateiktą skirtingų skirtingų savybių gyvūnų, kaip parodyta, įrašą. Gaukite šį įrašą naudodami užklausą SELECT taip:

>> PASIRINKTI * IŠ duomenų.gyvūnai;

01 pavyzdys:

Paimkime ribotus šios lentelės įrašus naudodami užklausas. Naudodami žemiau pateiktą užklausą žinome, kad pirmiausia bus vykdoma paklausa, o jos išvestis bus naudojama pagrindinėje užklausoje kaip įvestis. Papasakojimas paprasčiausiai pateikia amžių, kai gyvūno kaina yra 2500. Gyvūno, kurio kaina yra 2500, amžius lentelėje yra 4. Pagrindinė užklausa pasirinks visus lentelės įrašus, kai amžius yra didesnis nei 4, o išvestis pateikiama žemiau.

>> PASIRINKTI * IŠ duomenų.gyvūnai WHERE Amžius> (PASIRINKITE Amžių iš duomenų.gyvūnai KUR Kaina = '2500');

02 pavyzdys:

Naudokime tą pačią lentelę skirtingose ​​situacijose. Šiame pavyzdyje mes naudosime tam tikrą funkciją, o ne WHERE sąlygą porūšyje. Mes atsižvelgėme į visų už gyvūnus nurodytų kainų vidurkį. Vidutinė kaina bus 3189. Pagrindinė užklausa parinks visus gyvūnų, kurių kaina didesnė nei 3189, įrašus. Jūs gausite žemiau pateiktą išvestį.

>> PASIRINKTI * IŠ duomenų.gyvūnai WHERE Kaina> (PASIRINKITE AVG (Kaina) IŠ duomenų.gyvūnai);

03 pavyzdys:

Panaudokime sąlygą IN pagrindinėje SELECT užklausoje. Visų pirma, iš užklausos bus gautos didesnės nei 2500 kainos. Po to pagrindinė užklausa pasirinks visus lentelės „gyvūnai“ įrašus, kur kaina yra subklausos rezultate.

>> PASIRINKTI * IŠ duomenų.gyvūnai WHERE Kaina IN (PASIRINKITE kainą iš duomenų.gyvūnai KUR Kaina> 2500);

04 pavyzdys:

Mes naudojome antrinę užklausą, norėdami gauti gyvūno vardą, kurio kaina yra 7000. Kadangi tas gyvūnas yra karvė, todėl pavadinimas „karvė“ bus grąžintas į pagrindinę užklausą. Pagrindinėje užklausoje visi įrašai bus gauti iš lentelės, kurioje gyvūno vardas yra „karvė“.„Kadangi mes turime tik du gyvūnų„ karvių “įrašus, todėl turime žemesnę išeigą.

>> PASIRINKTI * IŠ duomenų.gyvūnai WHERE Name = (PASIRINKITE VARDĄ IŠ duomenų.gyvūnai WHERE Kaina = '7000');

Paklausa iš kelių lentelių įrašų:

Tarkime, kad jūsų duomenų bazėje yra dvi žemiau esančios lentelės: „studentas“ ir „mokytojas“. Išbandykime keletą užklausų pavyzdžių naudodami šias dvi lenteles.

>> PASIRINKTI * IŠ duomenų.studentas;
>> PASIRINKTI * IŠ duomenų.mokytojas;

01 pavyzdys:

Duomenis gausime iš vienos lentelės naudodami antrinę užklausą ir naudosime juos kaip įvestį pagrindinei užklausai. Tai reiškia, kad šios dvi lentelės gali būti tam tikru būdu susijusios. Toliau pateiktame pavyzdyje mes naudojome potekstę, norėdami gauti studento vardą iš lentelės „studentas“, kur mokytojo vardas yra „Samina“.„Ši užklausa grąžins„ Samina “pagrindinės užklausos lentelės„ mokytojui “.„Pagrindinėje užklausoje bus pasirinkti visi įrašai, susiję su mokytojo vardu“ Samina.„Kadangi turime du šio vardo įrašus, todėl pasiekėme šį rezultatą.

>> PASIRINKTI * IŠ duomenų.mokytojas WHERE TeachName = (PASIRINKITE TeachName FROM duomenis.studentas WHERE TeachName = 'Samina');

02 pavyzdys:

Pabandykite šį pavyzdį, jei norite parengti paklausimą skirtingų lentelių atveju. Mes turime antrinę užklausą, kuri parsineša mokytojo vardą iš stalo studento. Pavadinime bet kurioje vertės vietoje turėtų būti „i“. Tai reiškia, kad visi vardai stulpelyje „TeachName“, kurių vertė yra „i“, bus pasirinkti ir grąžinti į pagrindinę užklausą. Pagrindinė užklausa pasirinks visus įrašus iš „mokytojo“ lentelės, kur mokytojo vardas yra išvestyje, kurią pateikia užklausa. Kadangi subquery pateikė 4 mokytojų vardus, todėl mes turėsime visų šių vardų, esančių lentelėje, įrašą."

>> PASIRINKTI * IŠ duomenų.mokytojas WHERE TeachName IN (PASIRINKITE TeachName FROM duomenis.studentas WHERE TeachName LIKE '% i%');

03 pavyzdys:

Apsvarstykite šias dvi lenteles: „order“ ir „order1“.

>> PASIRINKTI * IŠ duomenų.įsakymas;
>> PASIRINKTI * IŠ duomenų.užsakymas1;

Pabandykime bet kokią šio pavyzdžio sąlygą, kad galėtume parengti užklausą. Paklausa parinks „id“ iš lentelės „order1“, kur stulpelio „Status“ vertė yra „Nesumokėta“.„ID“ gali būti daugiau nei 1. Tai reiškia, kad daugiau nei 1 vertė būtų grąžinta į pagrindinę užklausą, kad būtų gauti lentelės „order“ rezultatai. Tokiu atveju galima naudoti bet kokį „id“. Gavome žemiau pateiktą šios užklausos išvestį.

>> PASIRINKITE elementą, pardavimus, ID IŠ DUOMENYS.užsakymas WHERE id = JOKI (PASIRINKITE id iš duomenų.order1 WHERE Statusas = 'neapmokėta');

04 pavyzdys:

Tarkime, kad prieš taikydami bet kokią užklausą turite lentelėje „order1“ nurodytus duomenis.

>> PASIRINKTI * IŠ duomenų.užsakymas1;

Taikykime užklausą užklausoje, kad iš lentelės „order1“ ištrintume keletą įrašų. Pirma, antrinė užklausa pasirinks „Status“ vertę iš lentelės „order“, kur punktas yra „Book“.'Paklausa pateikia vertę „Mokama“. Dabar pagrindinė užklausa ištrins eilutes iš lentelės „order1“, kur stulpelio „Status“ vertė yra „Mokama."

>> IŠTRINTI IŠ duomenų.order1 WHERE Status = (Pasirinkite būseną iš duomenų.užsakymas WHERE punktas = 'knyga');

Patikrinę, atlikę užklausą, toliau nurodyti įrašai liko lentelėje „order1“.

>> PASIRINKTI * IŠ duomenų.užsakymas1;

Išvada:

Visuose aukščiau pateiktuose pavyzdžiuose efektyviai dirbote su daugybe užklausų. Tikimės, kad viskas dabar aišku ir švaru.

„OpenTTD“ ir „Simutrans“
Sukurti savo transporto modeliavimą gali būti smagu, atpalaiduojanti ir be galo viliojanti. Štai kodėl jūs turite įsitikinti, kad išbandėte kuo daugia...
„OpenTTD“ pamoka
„OpenTTD“ yra vienas iš populiariausių verslo modeliavimo žaidimų. Šiame žaidime turite sukurti nuostabų transporto verslą. Tačiau pradėsite nuo mažda...
„SuperTuxKart“, skirta „Linux“
„SuperTuxKart“ yra puikus pavadinimas, sukurtas nemokamai suteikti „Mario Kart“ patirtį jūsų „Linux“ sistemoje. Tai gana sudėtinga ir smagu žaisti, yr...