Innhold
Subqueries er spørringer nestet inne i en annen. De tillater deg å skille del av setningen og gi et mer lesbart alternativ til operasjoner som kan kreve komplekse sammenhenger og fagforeninger. Subqueries i MySQL kan returnere en verdi, rad, kolonne eller tabell med data.
Bruk subqueries til å lage mer lesbare og kompakte setninger (Thinkstock Images / Comstock / Getty Images)
Syntaxen
Den grunnleggende syntaksen til en underforespørsel er som følger:
SELECT * FROM table1 WHERE columnA = (VELG kolonneB FRA tabell2) GO
Subqueries bør bestå av en "SELECT", "INSERT", "UPDATE", "DELETE", "SET" eller "DO" setningen, og du kan ikke endre tabellen og bruke den i underprospektet samtidig. Subqueries brukes vanligvis på høyre side av WHERE-klausulen, som kan inneholde noen av sammenligningene og logiske operatører, for eksempel = (like), <> (forskjellig), <= (mindre enn eller lik),> = eller "MELLOM" (mellom to verdier), "NOT", "OG" og "ELLER". Du kan også bruke søkeordene "DISTINCT", "GROUP BY", "ORDER BY" og "LIMIT" og til og med kombinert med "JOIN" -klæringer. Bortsett fra de detaljerte begrensningene, er det få begrensninger når du skriver underkategorier i MySQL.
Det er ikke engang en begrensning på antall undersøkelser gjort i en setning. Du finner mer informasjon om subqueries i MySQL referansehåndboken (se delen "Ressurser").
eksempel
Anta at du har to bord: ett med for- og etternavn, adresse og postnummer til medlemmer av en adresseliste, og en med byer, stater og postnummer. For å finne navnene på medlemmer som bor i Brasilia, kan flere "velg" setninger brukes. Den første vil søke CEPs av Brasilia:
VELG FRA FRA koder WHERE state = "BRASILIA" GO
Deretter bruker du en "velg" for hver postkode funnet:
VELG navn, etternavn FRA adresser WHERE cep = [codecep] GO
Denne metoden er tidkrevende og lett å gjøre feil. Det er lett å miste en postnummer, spesielt hvis det er for mange av dem. En enklere måte å fullføre denne oppgaven på er å bruke den første setningen som et underspørsmål innen det andre:
SELECT navn, etternavn FRA adresser WHERE cep = (SELECT cep FRA koder WHERE state = "BRASILIA") GO
Denne spørringen vil vise alle medlemmer av din adresseliste som bor i Brasilia.