Delspørringer er spørsmål nestet i en annen spørring . Subqueries tillate deg å skille hver del av erklæringen og gi en mer lesbar alternativ til å utføre operasjoner som ville kreve komplekse sammenføyninger og fagforeninger uten subqueries . MySQL subqueries kan returnere en enkelt verdi , enkelt rad , enkelt kolonne eller et bord . The Syntax
Den grunnleggende syntaks for en subquery er dette : en
SELECT * FROM tabell WHERE columna = ( SELECT columnb FRA table2 ) ;
Delspørringer må være en SELECT , INSERT , UPDATE , DELETE, SET eller DO uttalelse, og du kan ikke endre en tabell og velge fra den i subquery .
Delspørringer finnes vanligvis på høyre side av WHERE-leddet , som kan inneholde av følgende sammenligning og logiske operatorer : = ( lik ) , < > ( ikke lik ) , < = ( mindre enn eller lik ),> = ( større enn eller lik ) , < ( mindre enn ),> ; ( større enn) , mELLOM ( verdien ligger mellom to verdier ) IKKE ( logisk NOT) , OG ( logisk AND) , OR ( logisk OR) . De kan også inneholde tydelige, GROUP BY, ORDER BY, og LIMIT søkeord. De kan også brukes i forbindelse med bli med -setninger. Annet enn restriksjonene ovenfor , er det svært få begrensninger plassert på subqueries i MySQL.
P Det er ikke engang en begrensning på antall subqueries som kan finnes i en uttalelse. Så lenge du plassere hver subquery i parentes , kan du ha så mange nestede spørringer som du trenger for å finne dine data . Mer informasjon om subqueries kan bli funnet i MySQL Reference Manual ( se Ressurser )
Eksempel
Anta at du har to tabeller : . Det første inneholder fornavn, navn, gateadresse og postnummer av medlemmene i adresselisten din , den andre inneholder by, stat og postnummer . Hvis du ønsket å finne navnene på de medlemmene som bor i Georgia , kan du bruke flere utvalgte uttalelser. Den første setningen ville være å finne postnumre for Georgia : en
SELECT zip FRA postnummer WHERE state = " GEORGIA ";
Så du ville utstede en SELECT-setning for hvert postnummer returnert:
SELECT fname , lname FRA adresse der zip = " [ postnummer ]";
At metoden er svært tidkrevende og utsatt for feil . Det er lett å gå glipp av et postnummer , spesielt hvis det er mange av dem
En enklere måte å fullføre oppgaven vil være å utstede det første utsagnet som en delspørring til den andre setningen : .
< P > SELECT fname , lname fRA adresse der zip = ( SELECT zip fRA postnummer WHERE state = " GEORGIA "); .
Dette søket vil returnere alle medlemmer av epostlisten som bor i Georgia med ett søk