MySQL Subqueries

MySQL Subqueries
Et underspørs er en SQL -spørring i et større spørsmål som er rekursiv, eller et subquery anses som en intern spørring. I kontrast blir det betegnet en ytre spørring som spørringen som inkluderer subQuery. En MySQL -subquery kan være innebygd i spørsmålene, inkludert SELECT, Sett inn, oppdatering eller sletting. Videre, i en annen underspørs, kan det hekkes en subquery. Uttrykket subquery skal lukkes i parenteser uansett hvor det brukes. Vi lærer deg hvordan og når du skal bruke MySQL -subquery for å komponere kompliserte spørsmål og beskrive ideen om den tilhørende subquery. Åpne kommandolinjeskallet fra skrivebordet ditt og skriv passordet ditt for å begynne å bruke det. Trykk Enter og fortsett.

SubQuery innen enkelt tabelloppføringer:

Lag en tabell som heter 'Animals' i databasen 'data.'Legg til nedenfor følgende oversikt over forskjellige dyr med forskjellige egenskaper som vist. Hent denne posten ved hjelp av SELECT -spørringen som følger:

>> Velg * fra data.dyr;

Eksempel 01:

La oss hente de begrensede postene til denne tabellen ved hjelp av underlagene. Ved hjelp av spørringen nedenfor, vet vi at subquery blir utført først, og utdataene vil bli brukt i hovedspørsmålet som input. En underliggende henter ganske enkelt alderen der dyreprisen er 2500. Alderen til et dyr hvis pris er 2500 er 4 i tabellen. Hovedspørsmålet vil velge alle tabellpostene der alderen er større enn 4, og utgangen er gitt nedenfor.

>> Velg * fra data.dyr der alder> (velg alder fra data.dyr der pris = "2500");

Eksempel 02:

La oss bruke den samme tabellen i forskjellige situasjoner. I dette eksemplet vil vi bruke en eller annen funksjon i stedet for hvor klausulen i subquery. Vi har tatt gjennomsnittet av alle prisene som er gitt for dyr. Gjennomsnittsprisen vil være 3189. Hovedspørsmålet vil velge alle postene til dyr som har en pris på mer enn 3189. Du får utdata nedenfor.

>> Velg * fra data.Dyr hvor pris> (velg AVG (pris) fra data.dyr);

Eksempel 03:

La oss bruke In Clause i den viktigste utvalgte spørringen. Først av alt vil subquery hente priser større enn 2500. Etter det vil hovedforespørselen velge alle postene til tabell 'dyr' der prisen ligger i subquery -resultatet.

>> Velg * fra data.dyr der prisen i (velg pris fra data.dyr der pris> 2500);

Eksempel 04:

Vi har brukt subquery for å hente navnet på dyret der prisen er 7000. Ettersom det dyret er en ku, er det grunnen til at navnet 'ku' blir returnert til hovedspørsmålet. I hovedspørsmålet vil alle postene bli hentet fra tabellen der dyrenavnet er 'Cow.'Siden vi bare har to poster for dyr', 'det er grunnen til at vi har utdataene nedenfor.

>> Velg * fra data.Dyr der navn = (velg navn fra data.dyr der pris = "7000");

SubQuery innen flere tabellposter:

Anta de to tabellene nedenfor, 'Student' og 'lærer', i databasen din. La oss prøve noen eksempler på underlag ved hjelp av disse to tabellene.

>> Velg * fra data.student;
>> Velg * fra data.lærer;

Eksempel 01:

Vi vil hente data fra en tabell ved hjelp av subquery og bruke dem som en inngang for hovedspørsmålet. Dette betyr at disse to tabellene kan forholde seg på noen måte. I eksemplet nedenfor har vi brukt subquery for å hente studentens navn fra bordet 'Student' der lærernavnet er 'Samina.'Denne spørringen vil returnere' Samina 'til hovedtabellen'.'Hovedspørsmålet vil da velge alle postene relatert til lærernavnet' Samina.'Siden vi har to poster for dette navnet, har vi derfor fått dette resultatet.

>> Velg * fra data.Lærer der lærenavn = (velg TeachName fra data.Student hvor lærenavn = 'Samina');

Eksempel 02:

For å utdype subquery i tilfelle av forskjellige tabeller, kan du prøve dette eksemplet. Vi har et subquery som henter lærerens navn fra bordstudenten. Navnet skal ha 'jeg' i en hvilken som helst posisjon i sin verdi. Dette betyr at alle navnene i kolonnen TeachName har 'I' i deres verdi vil bli valgt og returnert til hovedspørsmålet. Hovedspørsmålet vil velge alle postene fra 'lærerens' tabellen der lærernavnet er i utdataene som er returnert av underkjøringen. Da Subquery returnerte 4 navn på lærere, er det derfor vi vil ha en oversikt over alle disse navnene som er bosatt i bordet 'lærer.'

>> Velg * fra data.Lærer der lærenavn i (velg TeachName fra data.student der lærenavn som '%i%');

Eksempel 03:

Tenk på de to tabellene nedenfor, 'Order' og 'Order1'.

>> Velg * fra data.rekkefølge;
>> Velg * fra data.ordre1;

La oss prøve en hvilken som helst klausul i dette eksemplet for å utdype underkant. Subquery vil velge 'ID' fra tabellen 'Order1', der kolonnen 'Status' har en verdi av 'ubetalt.'Id' kan være mer enn 1. Dette betyr at mer enn 1 verdi vil bli returnert til hovedspørsmålet for å få tabellen 'ordre' resultater. I dette tilfellet kan enhver "id" brukes. Vi har fått utdataene nedenfor for denne spørringen.

>> Velg vare, salg, ID fra data.Bestill der ID = hvilken som helst (velg ID fra data.ordre1 hvor status = 'ubetalt');

Eksempel 04:

Anta at du har dataene nedenfor i tabellen 'Order1' før du bruker noen spørsmål.

>> Velg * fra data.ordre1;

La oss bruke spørringen i en spørring for å slette noen poster fra tabellen 'Order1'. For det første vil subquery velge "status" -verdien fra tabellen "rekkefølge" der varen er "bok.'The Subquery Returns' betalt 'som verdien. Nå vil hovedspørsmålet slette radene fra tabellen 'Order1' der 'Status' kolonneverdi er 'betalt.'

>> Slett fra data.ordre1 hvor status = (velg status fra data.bestill hvor element = 'bok');

Når vi sjekker, har vi nå de nedenfor postene forblitt i tabellen 'Order1' etter utførelsen av spørringen.

>> Velg * fra data.ordre1;

Konklusjon:

Du har effektivt jobbet med mange underlag i alle eksemplene ovenfor. Vi håper alt er klart og rent nå.