SQL-forespørgsler er kødet og kartoflerne fra RDBMS CRUD (opret, læs, opdater, slet). Men når din applikation eller virksomhedsdatabase vokser, bliver behovet for intelligente forespørgsler til at hente betingede, kravspecifikke data et must-have.

SQL er relativt omfattende og omfatter mange funktionaliteter - som hver især er velegnede til forskellige forretningsanvendelser. En sådan funktionalitet omfatter brugen af ​​underforespørgsler.

For at gøre dine koder effektive og effektive kan du bruge underforespørgsler i dine SQL-koder til at hente data, manipulere eksisterende variabler og opnå flere mål på én gang.

Hvad er SQL-underforespørgsler?

En underforespørgsel er en indlejret forespørgsel, der fungerer som en parameter i en anden hovedforespørgsel. Underforespørgslen er en indre forespørgsel, mens hovedforespørgslen er ydre forespørgsel.

Underforespørgslen returnerer angiveligt dataene som et argument i parentes for hovedforespørgslen, mens hovedforespørgslen yderligere henter det endelige resultat.

instagram viewer

Underforespørgsler er indlejret i Vælg erklæring eller i Hvor klausul. En sådan struktur gør det muligt for underforespørgslen at opføre sig som en velbeskrevet datafiltreringstilstand. Desværre kan underforespørgsler kun bruge Grupper efter kommandoer og ikke Bestil efter kommandoer, da de kun er tilladt i hovedforespørgslen.

Relaterede: Alt du behøver at vide om SQL GROUP BY-erklæringen

Normalt omfatter hver underforespørgsel en enkelt kolonne med Vælg klausul. Der er dog scenarier, hvor hovedforespørgslen har flere kolonner. En underforespørgsel kan indlejres i en anden underforespørgsel, hvilket gør den til en indlejrende underforespørgsel.

Strikturen for en underforespørgsel er som følger:

Vælg kolonnenavn fra tabel, hvor betingelse= 
(SELECT conditional_column FROM table) som alias;

Antag for eksempel, at du har følgende tabel:

ID Fornavn Efternavn Agenturgebyr
1 John Væge 5000
2 Robert Graham 4000
3 Stephen Hicks 8000
4 Bob Marley 1000
5 Mary Ellen 9000

I denne tabel kan du skrive en underforespørgsel i stedet for at skrive flere linjer kode for at trække navnene på personer, der tjener over det gennemsnitlige bureaugebyr.

Relaterede: Sådan opretter du en tabel i SQL

Sådan ser forespørgslen ud:

Vælg * fra agent_details
hvor Agency_Fee > (vælg gennemsnit (Agency_Fee) fra agent_details);

Kommandoen før > tegn er den ydre forespørgsel, hvorimod alt efter > tegn er den indre forespørgsel.

Den indre forespørgsel vil beregne det gennemsnitlige bureauhonorar i underforespørgslen, og den ydre forespørgsel vil vise alle værdier, der er større end den beregnede gennemsnitsværdi.

Hvordan bruger man underforespørgsler i SQL?

Der er et par forskellige måder, hvorpå du kan bruge underforespørgsler i SQL.

Underforespørgsler med Where-klausul

En af de mest grundlæggende strukturer af en underforespørgsel i SQL er inden for Where-sætningen. Det er den nemmeste måde at definere, hvad du søger efter. Select-sætningen returnerer værdier i henhold til underforespørgselsbetingelsen(e) og bruger den som en parameter for hovedforespørgslen.

Forespørgselsstruktur:

vælg * fra tabelnavn
hvor kolonnenavn = (vælg kolonnenavn fra tabelnavn);

Lad os forklare dette med et eksempel.

Antag, at du vil finde det næsthøjeste bureaugebyr fra tabellen bureau_details. For at gøre det er der alternative funktioner i SQL; ikke desto mindre er den bedste metode at bruge en underforespørgsel.

Sådan kan du definere underforespørgslen:

vælg *, maks. (bureaugebyr)
fra agent_details
hvor Agency_fee < (vælg max (Agency_fee) fra agent_details);

Den resulterende erklæring vil vise dig 8000, som er det næsthøjeste gebyr i den givne tabel. Når forespørgslen kører, beregner underforespørgslen den maksimale værdi fra listen over gebyrer. Det højeste gebyrbeløb (9000) er gemt i hukommelsen.

Når denne del er beregnet, beregnes den anden del af forespørgslen, som finder det næsthøjeste gebyr fra tabellen (da < tegn bruges). Slutresultatet er 8000, hvilket er det næsthøjeste gebyr i tabellen.

Underforespørgsler inden for From-klausulen

En anden variation inden for underforespørgsler er at overføre betingelsen i fra klausul. Som et lignende koncept behandles den indre forespørgsel først, og den ydre forespørgsel behandles efterfølgende. Den indre forespørgsel vil filtrere på dataene og vise resultater, hvor ID = 3.

Her er forespørgslen til reference:

vælg a.* fra (
vælg agenturgebyr fra agent_details
hvor ID= 3) som en;

Dette er en meget grundlæggende struktur; Men jo mere komplekse dine datatabeller er, vil du få flere rækker af data, som matcher dine betingelser.

Brug af underforespørgsler med Insert Into Statement

Hvis du vil opdatere en eksisterende tabel med nogle nye datarækker, kan du bruge Indsæt i udmelding. En underforespørgsel kan vise sig at være ret fordelagtig, hvis du ønsker at tilføje værdier baseret på en bestemt betingelse(r).

Forespørgselsstruktur:

indsæt i tabelnavn 
vælg * fra tabelnavn
hvor kolonnenavn = betingelser;
vælg * fra tabelnavn;

Her er et eksempel på, hvordan du kan bruge insert into-sætningen med underforespørgslen:

indsæt i agent_details
vælg * fra agent_details
hvor agenturgebyr i (1000, 5000);
vælg * fra agent_details;

Når forespørgslen kører, vil de værdier, der matcher betingelsen, blive indsat i den eksisterende tabel igen. Det Vælg * reference samler alle kolonnerne op og indsætter dem i tabellen agent_details, som den er. Det i statement bruges til at definere flere filterbetingelser på én gang.

Brug af underforespørgsler med opdateringserklæring

Der er situationer, hvor du vil opdatere de underliggende tabeller, mens du kører forespørgslerne. For at gøre det kan du bruge opdatering sætning sammen med forespørgselskommandoer.

Sådan skriver du underforespørgslen for at opdatere oplysningerne i tabellen i ét tilfælde:

opdater tabelnavn 
sæt kolonnenavn = ny_værdi
hvor kolonnenavn =
(vælg kolonnenavn fra tabelnavn hvor = );

Her er et eksempel, der viser brugen af ​​opdateringserklæringen:

OPDATERING agent_detaljer 
SET agenturgebyr = 35.000
WHERE agentur_fee =
(SELECT agency_fee FROM agent_details WHERE First_name='John');
vælg * fra agent_details;

Underforespørgslen vil filtrere på kolonnen agenturgebyr og udskille rækken/rækkerne, hvor Fornavn matcher John. Den ydre forespørgsel udføres dernæst, hvor bureaugebyret opdateres til 35000 for John Wick.

Du kan bestå en Vælg * erklæring for at kontrollere de endelige resultater; du vil bemærke, at agenturgebyret for John Wick er opdateret til 35000, da der kun er tilfælde, der matcher betingelserne defineret i forespørgslen.

Brug af underforespørgsler med Slet-erklæring

Ligesom opdateringssætningen, hvor du opdaterer rækkerne af data i en eksisterende tabel, er slette sætning sletter række(r) af data baseret på en betingelse.

Slet-erklæringsstrukturen er:

slet fra tabelnavn hvor variabel/kolonnenavn = 
(vælg kolonnenavn fra tabelnavn hvor = betingelse);

Her er et eksempel:

Slet fra agent_details 
hvor Fornavn IN
(vælg Fornavn fra agent_detaljer, hvor bureaugebyr = 9000);
vælg * fra agent_details;

Brug af underforespørgsler i SQL

Underforespørgsler er en fremragende funktion i SQL, som kan spare dig for at skrive endeløse linjer med unødvendig kode. Når du er i stand til at bruge de grundlæggende funktioner i underforespørgsler til at lave dit bud, vil du aldrig bekymre dig om at gå ind i kompleksiteten af ​​SQL-kodning.

Det er altid bedst at forbedre din eksisterende SQL-viden for at sikre, at du altid er på toppen af ​​dit spil. Vær sikker på, SQL-snydeark kan give dig en god ide om, hvordan du frisker op på dine grundlæggende funktioner med et enkelt blik.

Det essentielle SQL-kommandoer snydeark for begyndere

Vil du lære mere om SQL? At have styr på de forskellige SQL-forespørgselskommandoer er en fantastisk måde at komme videre på.

Læs Næste

DelTweetE-mail
Relaterede emner
  • Programmering
  • Programmering
  • SQL
  • Programmeringsværktøjer
Om forfatteren
Gaurav Siyal (35 artikler udgivet)

Gaurav Siyal har to års skriveerfaring og har skrevet for en række digitale marketingfirmaer og softwarelivscyklusdokumenter.

Mere fra Gaurav Siyal

Abonner på vores nyhedsbrev

Tilmeld dig vores nyhedsbrev for tekniske tips, anmeldelser, gratis e-bøger og eksklusive tilbud!

Klik her for at abonnere