Indhold
Subqueries er forespørgsler indlejret inde i en anden. De giver dig mulighed for at adskille en del af sætningen og give et mere læseligt alternativ til operationer, der kan kræve komplekse forbindelser og fagforeninger. Subqueries i MySQL kan returnere en værdi, række, kolonne eller datatabell.
Brug subqueries til at skabe mere læsbare og kompakte sætninger (Thinkstock Images / Comstock / Getty Images)
Syntaxen
Den grundlæggende syntaks for en underforespørgsel er som følger:
VÆLG * FRA tabel1 HVOR columnA = (VÆLG kolonneB FRA tabel2) GO
Subqueries skal bestå af en "SELECT", "INSERT", "UPDATE", "DELETE", "SET" eller "DO" -opstillingen, og du kan ikke ændre bordet og bruge det i underundersøgelsen på samme tid. Subqueries bruges sædvanligvis på højre side af WHERE-klausulen, som kan indeholde nogen af sammenligning og logiske operatører, f.eks. = (Lige), <> (anderledes), <= (mindre end eller lige),> = eller "MELLEM" (mellem to værdier), "NOT", "OG" og "ELLER". Du kan også bruge søgeordene "DISTINCT", "GROUP BY", "ORDER BY" og "LIMIT" og endda kombineret med "JOIN" -opgørelser. Bortset fra de detaljerede begrænsninger er der få begrænsninger, når du skriver underforespørgsler i MySQL.
Der er ikke engang en begrænsning af antallet af underundersøgelser foretaget inden for en sætning. Du kan finde flere oplysninger om underkategorier i MySQL-referencemanualen (se afsnittet "Ressourcer").
eksempel
Antag at du har to tabeller: En med for- og efternavn, adresse og postnummer til medlemmer af en mailingliste, og en med byer, stater og postnummer. For at finde navnene på medlemmer, der bor i Brasilia, kan flere "vælg" sætninger bruges. Den første vil søge CEP'erne fra Brasilia:
VÆLG FRA FRA KODER HVOR tilstand = "BRASILIA" GO
Brug derefter en "Select" for hver postkode fundet:
VELG navn, efternavn FRA adresser WHERE cep = [codecep] GO
Denne metode er tidskrævende og let at lave fejl. Det er nemt at miste en postnummer, især hvis der er for mange af dem. En nemmere måde at fuldføre denne opgave på er at bruge den første sætning som en underforespørgsel inden for det andet:
VELG navn, efternavn FRA adresser WHERE cep = (VÆLG cep FRA koder WHERE state = "BRASILIA") GO
Denne forespørgsel viser alle medlemmer af din mailingliste, der bor i Brasilia.