PostgreSQL der eksisterer spørring

PostgreSQL der eksisterer spørring

PostgreSQL: Bruke hvor eksisterer klausul

Når en hvilken. Den kompliserte spørringen kan skrives enkelt ved å dele en stor spørring i flere underlag. Eksisterer klausul brukes med en undervisning i en SQL -uttalelse. Utgangen fra eksisterer avhenger av antall poster som er returnert av subquery, men avhenger ikke av verdiene til postene. Resultatet av eksisterer vil være sant hvis den tilknyttede subquery returnerer minst en rad. Hvordan du kan bruke eksisterer og ikke eksisterer klausul i Select, Sett inn, oppdatering og slett uttalelser vises i denne opplæringen ved hjelp av forskjellige eksempler.

Eksisterer klausul syntaks:

Velg Col1, Col2, Col3 ..
Fra tabell_name1
Der eksisterer (velg 1
FRA
tabell_name2
Hvor col1 = tabell_name1.col1);

Lag tre tabeller som heter selskap, varer og Kunder og sett inn noen data. Kjør følgende velg spørring for å vise innholdet i disse tabellene.

Velg * fra selskapet;
Velg * fra elementer;
Velg * fra kunder;

Eksempel-1: Å bruke eksisterer klausul i valgt spørring

(a) eksisterer

Følgende spørsmål vil hente poster fra gjenstander Tabell basert på selskap bord. Subquery søker i alle poster fra selskap bord hvor Bedrifts-ID av selskap Tabellen er lik Bedrifts-ID av gjenstander tabell og verdien av Telefon Feltet er ikke tomt. Det er en rekord i selskap tabell som ikke har telefonnummer, og denne posten vil bli utelatt fra utgangen.

Velg item_id, navn, mengde
Fra varer
Der eksisterer (velg 1
Fra selskap
Hvor varer.Company_id = Company.Company_id and Company.telefon ");

Produksjon:

Registreringen av LG har ingen telefonoppføring i firmababellen. Så det vises ikke i utgangen.

(b) eksisterer ikke

Ikke eksisterer klausul er motsatt av eksisterer klausul. Følgende spørsmål vil hente disse postene fra gjenstander Tabell når subquery returnerer falsk.

Velg item_id, navn, mengde
Fra varer
Der det ikke eksisterer (velg 1
Fra selskap
Hvor varer.Company_id = Company.Company_id and Company.webside_url er null);

Produksjon:

Det er ingen registrering i selskap bord hvor nettadresse er null. Så utgangen av subquery er falsk for alle poster, og alle poster over varetabellen blir hentet.

Eksempel-2: Å bruke eksisterer klausul i Sett inn spørsmål

I henhold til følgende innsettingsspørsmål vil dataene bli satt inn i gjenstander bord når Bedrifts-ID av begge selskap og Kunder Tabellene er like.

Sett inn gjenstander
(Bedrifts-ID)
Velg Company_ID
Fra kunder
Der eksisterer (velg 1
Fra selskap, kunder
Hvor kunder.Company_id = Company.Bedrifts-ID);

Produksjon:

Det er tre oppføringer for Bedrifts-ID i kunder tabell med verdier er 1 og 2. Så subquery vil komme tilbake for tre ganger og tre poster vil bli satt inn.

Kjør Select Query for å sjekke innholdet i tabellen til elementene.

Eksempel-3: Å bruke eksisterer klausul i oppdateringsspørsmål

Følgende spørsmål vil oppdatere postene til gjenstander bord hvor Bedrifts-ID er 1 og subquery returnerer sann.

Oppdater elementer
Set name = "Nokia"
Hvor Company_id = 1 og eksisterer (velg 1
Fra varer
Hvor name = "ikke tilordne");

Produksjon:

Her vil underspringer komme tilbake i tre ganger og Bedrifts-ID er 1 for tre poster. Tre poster vil bli oppdatert etter å ha utført oppdateringsspørsmålet.

Kjør Select Query for å sjekke innholdet i tabellen til elementene.

Eksempel-4: Å bruke eksisterer klausul i Delete Query

Følgende spørring vil slette disse postene over gjenstander bord hvor Bedrifts-ID er 1 og subquery returnerer sann.

Slett fra elementer
Hvor Company_id = 1 og eksisterer (velg 1
Fra varer
Hvor name = "ikke tilordne");

Produksjon:

Det er tre poster med verdi 1 av Bedrifts-ID og en post har navneverdi 'Ikke tilordne'. Så vil tilstanden sant i tre ganger og slette tre poster fra gjenstander bord.

Kjør Select Query for å sjekke innholdet i tabellen til elementene.

Håper, du har fått en klar ide om å bruke eksisterer klausul i SQL -spørringen etter å ha lest denne opplæringen.