Underforespørgsler er forespørgsler indlejret i en anden forespørgsel . Underforespørgsler tillader dig at adskille de enkelte del af oversigten og give en mere læsbar alternativ til at udføre operationer, som ville kræve komplekse sammenføjninger og fagforeninger uden underforespørgsler . MySQL underforespørgsler kan returnere en enkelt værdi , enkelt række , enkelt kolonne eller et bord. Syntaksen
Den grundlæggende syntaks for en underforespørgsel er dette:
SELECT * FROM tabel WHERE Columna = ( SELECT columnb FROM Tabel2 )
Underforespørgsler skal være en SELECT, INSERT , UPDATE , DELETE , SET eller DO erklæring , og du kan ikke ændre et bord og vælge det i underforespørgslen .
Underforespørgsler findes normalt på højre side af WHERE , hvilket kan indeholde nogen af følgende sammenligning og logiske operatorer : = ( lig ) , < > (ikke lig ) , < = ( mindre end eller lig ) , > = ( større end eller lig ) , < ( mindre end ) , > ; (større end ) , mELLEM ( værdi ligger mellem to værdier ) NOT (logisk NOT ) OG (logisk AND ) ELLER (logisk OR) . De kan også indeholde DISTINCT , GROUP BY, ORDER BY og LIMIT søgeord. De kan endda bruges sammen med JOIN udsagn . Andre end de begrænsninger ovenfor, er der meget få begrænsninger placeret på underforespørgsler indenfor MySQL.
P Der er ikke engang en begrænsning af antallet af underforespørgsler , der kan findes i en erklæring. Så længe du placerer hver underforespørgsel i parentes , kan du have så mange indlejrede forespørgsler , som du har brug for at finde dine data. Flere oplysninger om underforespørgsler kan findes i MySQL reference manual (se Resources)
Eksempel
Antag at du har to tabeller: . Det første indeholder det fornavn, efternavn Navn , Gade og Zip Code af medlemmerne af din adresseliste , den anden indeholder By, stat og postnummer. Hvis du ønsker at finde navnene på de medlemmer, der bor i Georgien , kan du bruge flere udvalgte sætninger. Den første sætning ville være at finde postnumre for Georgien : Hej
SELECT zip fra zipcode WHERE state = " GEORGIA "
Så du ville udsende en vælge erklæring for hver postnummer tilbage : < br >
SELECT fname , lname FROM adresse WHERE zip = " [ zipcode ]"
Denne metode er meget tidskrævende og udsat for fejl . Det er nemt at gå glip af et postnummer , især hvis der er en masse af dem
En nemmere måde at fuldføre din opgave vil være at udstede det første udsagn som en underforespørgsel til den anden erklæring: .
< P > SELECT fname , lname FROM adresse WHERE zip = ( SELECT zip fra zipcode WHERE state = " GEORGIA ") .
Denne forespørgsel vil returnere alle de medlemmer af din adresseliste , der bor i Georgien med én forespørgsel < br >