PostgreSQL WHERE EXISTS Query

PostgreSQL: Bruke where EXISTS-klausul

Når EN SQL-spørring brukes i en ANNEN SQL-spørring, kalles den en subquery. Den kompliserte spørringen kan skrives enkelt ved å dele en stor spørring i flere subqueries. EXISTS-klausulen brukes med en delspørring i EN SQL-setning. Resultatet AV EKSISTERER avhenger av antall poster som returneres av delspørringen, men avhenger ikke av verdiene til postene. RESULTATET AV EKSISTERER vil være sant hvis den tilknyttede delspørringen returnerer minst en rad. Hvordan DU kan bruke EKSISTERER og IKKE EKSISTERER klausul i select, insert, update and delete setninger vises i denne opplæringen ved hjelp av ulike eksempler.

EKSISTERER Klausul Syntaks:

velg col1, col2, col3…..
fra table_name1
HVOR FINNES (VELG 1
fra
table_name2
hvor col1 = table_name1.col1);

Opprett tre tabeller som heter firma, varer og kunder, og sett inn noen data. Kjør følgende utvalgsspørring for å vise innholdet i disse tabellene.

VELG * fra firma;
VELG * fra elementer;
VELG * fra kunder;

Eksempel-1: Bruke EXISTS-setningsdelen I SELECT query

(A) EXISTS

følgende spørring vil hente poster fra elementer tabell basert på selskapet tabell. Delspørringen søker i alle poster fra firmatabellen der company_id for firmatabellen er lik company_id for varetabellen, og verdien for telefon-feltet er ikke tomt. Det er en post i selskapet tabell som ikke har telefonnummer og denne posten vil bli utelatt fra utgangen.

VELG item_id, navn, antall
fra elementer
HVOR FINNES (VELG 1
fra firma
HVOR elementer.company_id = selskap.company_id og selskap.telefon<>»);

Utgang:

posten TIL LG har ingen telefonoppføring i selskapstabellen. Så det er ikke dukket opp i produksjonen.

(b) EKSISTERER IKKE

eksisterer ikke klausul er motsatt AV eksisterer klausul. Følgende spørring vil hente disse postene fra elementer tabellen når delspørringen returnerer false.

VELG item_id, navn, antall
fra elementer
HVOR ikke FINNES (VELG 1
fra firma
HVOR elementer.company_id = selskap.company_id og selskap.website_url ER NULL);

Output:

det er ingen post i firma tabell der website_url ER NULL. Så utgangen av subquery er falsk for alle poster og alle poster av elementer tabellen hentes.

Eksempel-2: Bruke EKSISTERER-setningsdelen I SETT inn spørring

i Henhold til følgende sett inn spørring, vil dataene settes inn i elementer tabell når company_id av både firma og kunder tabeller er like.

SETT inn elementer
(company_id)
VELG company_id
fra kunder
HVOR finnes (velg 1
fra firma,kunder
HVOR kunder.company_id = selskap.firma_id);

Output:

det er tre oppføringer for company_id i kunder tabell med verdier er 1 og 2. Så subquery vil returnere sant for tre ganger og tre poster vil bli satt inn.

Kjør utvalgsspørringen for å kontrollere innholdet i elementer-tabellen.

Eksempel-3: Bruke EKSISTERER-setningsdelen I OPPDATERINGSSPØRRING

følgende spørring vil oppdatere poster av elementer tabellen der company_id er 1 og delspørringen returnerer true.

OPPDATER elementer
ANGI navn=’Nokia’
der company_id=1 OG FINNES (VELG 1
fra elementer
der name= ‘Ikke Tilordne’);

Utgang:

her vil subquery returnere true for tre ganger og company_id er 1 for tre poster. Tre poster vil bli oppdatert etter å ha utført oppdateringsspørringen.

Kjør utvalgsspørringen for å kontrollere innholdet i elementer-tabellen.

Eksempel-4: Bruke EKSISTERER-setningsdelen I DELETE query

følgende spørring vil slette disse postene av elementer tabell der company_id er 1 og delspørringen returnerer true.

SLETT fra elementer
der company_id=1 OG EKSISTERER (VELG 1
fra elementer
DER name= ‘Ikke Tilordne’);

Utgang:

det er tre poster med verdi 1 av company_id og en post har navneverdi ‘Ikke Tilordne’. Så vil tilstanden gjelder for tre ganger og slette tre poster fra elementer tabellen.

Kjør utvalgsspørringen for å kontrollere innholdet i elementer-tabellen.

Håper, du har en klar ide om å bruke EXISTS-klausulen i SQL-spørring etter å ha lest denne opplæringen.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.