PostgreSQL IN, Ikke IN med eksempler

โšก Smart oppsummering

PostgreSQL IN-operatoren sjekker om en verdi vises i en liste eller delspรธrring i en WHERE-klausul, og erstatter flere OR-betingelser pรฅ tvers av SELECT-, UPDATE-, INSERT- og DELETE-setninger for renere, raskere og mer lesbar filtrering.

  • ???? Syntaks: verdi IN (liste) returnerer sann nรฅr verdien samsvarer med et listeelement.
  • ๐Ÿ”ค Karakterlister: Sett tekstverdier i enkle anfรธrselstegn i parentesene.
  • ๐Ÿ”ข Numeriske lister: Sammenlign tall direkte, uten anfรธrselstegn, for รฅ fรฅ eksakte treff.
  • ๐Ÿšซ IKKE I: Returnerer rader hvis verdi mangler i den oppgitte listen.
  • โš ๏ธ NULL-felle: En NULL-verdi i NOT IN kan stille returnere null rader.
  • ๐Ÿค– AI-spรธrringer: Assistenter bygger IN-klausuler og flagger NULL- og ytelsesrisikoer.

PostgreSQL INN, IKKE INN med eksempler

Hva er PostgreSQL I?

IN-operatoren brukes i en WHERE-klausul som gjรธr det mulig รฅ sjekke om en verdi finnes i en liste med andre verdier. IN-operasjonen bidrar til รฅ redusere behovet for flere ELLER-betingelser i SELECT-, UPDATE-, INSERT- eller DELETE-setninger.

syntax

IN-operatoren tar fรธlgende syntaks:

value IN (value_1, value_2, ...)

Verdien er verdien du ser etter i listen.

Verdi_1, verdi_2... er listeverdiene.

Hvis verdien finnes i listen, vil operatรธren returnere en sann.

Listen kan vรฆre et sett med tall eller strenger, eller til og med resultatet av en SELECT-setning som vist nedenfor:

value IN (SELECT value FROM table-name);

Utsagnet plassert i parentesen er kjent som en underspรธrring.

PostgreSQL INN Med karakter

La oss demonstrere hvordan du kan bruke IN-operatoren med tegnverdier.

Tenk pรฅ fรธlgende tabell:

ansatte:

PostgreSQL INN Med karakter

La oss kjรธre fรธlgende spรธrring mot tabellen ovenfor:

SELECT * FROM Employees WHERE name IN ('James John', 'Mercy Bush', 'Kate Joel');

Den returnerer fรธlgende:

PostgreSQL IN Med tegnresultat

Vi har en liste med tre navn. Vi sรธker etter om vi kan finne noen av disse navnene i navnekolonnen i tabellen Ansatte. Kate Joel ble matchet med en av tabellens poster, og detaljene ble returnert.

PostgreSQL INN med numerisk

La oss nรฅ se hvordan vi kan bruke IN-operatoren med numeriske verdier.

Vurder pristabellen nedenfor:

Pris:

PostgreSQL INN med numerisk

Vi kan kjรธre fรธlgende spรธrring mot tabellen:

SELECT * FROM Price WHERE price IN (200, 308, 250, 550);

Dette returnerer fรธlgende:

PostgreSQL IN Med numerisk resultat

Vi har laget en liste med 4 numeriske verdier. Vi sjekker om vi kan matche noen av disse verdiene med verdiene i priskolonnen i pristabellen. To verdier ble matchet, og detaljene deres ble returnert.

Bruk av IKKE-funksjonen Operator

IN-operatรธren kan brukes sammen med NOT-operatรธren. Den returnerer verdiene som ikke finnes i den angitte kolonnen. Vi vil bruke pristabellen for รฅ demonstrere dette.

SELECT * FROM Price WHERE price NOT IN (200, 400, 190, 230);

Dette vil returnere fรธlgende:

PostgreSQL IN Bruker NOT-operatoren

Vi har laget en liste med 4 numeriske verdier. Vi sjekker priskolonnen i Pristabellen for verdier som ikke er en del av listen. To verdier, 250 og 300, ble ikke funnet. Derfor har opplysningene deres blitt returnert.

Bruker pgAdmin

Utover SQL-skallet kan de samme IN- og NOT IN-spรธrringene kjรธres visuelt gjennom pgAdmin-grensesnittet.

Med karakter

For รฅ oppnรฅ det samme gjennom pgAdmin, gjรธr dette:

Trinn 1) Logg pรฅ pgAdmin-kontoen din.

Trinn 2)

  1. Fra navigasjonslinjen til venstre klikker du pรฅ Databaser.
  2. Klikk pรฅ Demo.

Bruke pgAdmin med tegn

Trinn 3) Skriv inn sรธket i spรธrringsredigeringsprogrammet:

SELECT * FROM Employees WHERE name IN ('James John', 'Mercy Bush', 'Kate Joel');

Trinn 4) Klikk pรฅ Utfรธr-knappen.

Bruk av pgAdmin med tegnspรธrring

Den skal returnere fรธlgende:

Bruk av pgAdmin med tegnresultat

Med numerisk

For รฅ oppnรฅ det samme gjennom pgAdmin, gjรธr dette:

Trinn 1) Logg pรฅ pgAdmin-kontoen din.

Trinn 2)

  1. Fra navigasjonslinjen til venstre klikker du pรฅ Databaser.
  2. Klikk pรฅ Demo.

Bruke pgAdmin med numerisk

Trinn 3) Skriv inn sรธket i spรธrringsredigeringsprogrammet:

SELECT * FROM Price WHERE price IN (200, 308, 250, 550);

Trinn 4) Klikk pรฅ Utfรธr-knappen.

Bruk av pgAdmin med numerisk spรธrring

Den skal returnere fรธlgende:

Bruk av pgAdmin med numerisk resultat

Bruk av IKKE-funksjonen Operator

For รฅ oppnรฅ det samme gjennom pgAdmin, gjรธr dette:

Trinn 1) Logg pรฅ pgAdmin-kontoen din.

Trinn 2)

  1. Fra navigasjonslinjen til venstre klikker du pรฅ Databaser.
  2. Klikk pรฅ Demo.

Bruk av NOT-operatoren i pgAdmin

Trinn 3) Skriv inn sรธket i spรธrringsredigeringsprogrammet:

SELECT * FROM Price WHERE price NOT IN (200, 400, 190, 230);

Trinn 4) Klikk pรฅ Utfรธr-knappen.

Bruk av NOT-operatorspรธrring i pgAdmin

Den skal returnere fรธlgende:

Bruk av NOT-operatorresultat i pgAdmin

Last ned databasen som brukes i denne opplรฆringen

Spรธrsmรฅl og svar

In PostgreSQL, EXISTS kjรธrer ofte raskere enn IN pรฅ store delspรธrringer fordi den stopper ved fรธrste treff. For smรฅ, konstante lister er IN enkelt og effektivt. Test begge med EXPLAIN ANALYZE pรฅ dine egne data.

NOT IN behandler NULL som ukjent, sรฅ hvis listen eller delspรธrringen inneholder en NULL, kan hele betingelsen evalueres til ukjent og returnere null rader. Filtrer ut NULL-er eller bruk NOT EXISTS i stedet.

IN erstatter lange kjeder av ELLER-betingelser med รฉn lesbar klausul. WHERE id IN (1,2,3) er lik WHERE id=1 OR id=2 OR id=3, men er kortere, tydeligere og enklere รฅ vedlikeholde.

Ja. PostgreSQL behandler x IN (a, b, c) som ekvivalent med x = ANY (ARRAY[a, b, c]). Begge gir samme resultat og vanligvis samme spรธrreplan.

AI-assistenter genererer IN-klausuler fra vanlig engelsk, foreslรฅr riktig verdiliste og flagger NULL-risikoer i NOT IN. De omskriver ogsรฅ trege spรธrringer og legger til EXPLAIN-hint for finjustering.

Ja. AI Copilot-verktรธy oppdager gjentatte ELLER-betingelser i รฉn kolonne og omformer dem til รฉn IN-liste, noe som forbedrer lesbarheten og reduserer sjansen for logiske feil.

Ja. Plasser et SELECT-tegnet i parentesene: WHERE id IN (SELECT id FROM orders). Den indre spรธrringen, kalt en delspรธrring, leverer listen over verdier som kontrolleres av IN.

For store tabeller yter NOT EXISTS eller en LEFT JOIN med IS NULL vanligvis bedre enn NOT IN fordi PostgreSQL bygger en effektiv anti-join. Sรธrg ogsรฅ for at de sammenlignede kolonnene er indeksert.

Oppsummer dette innlegget med: