PostgreSQL IN, Ikke IN med eksempler

โšก Smart opsummering

PostgreSQL IN-operatoren kontrollerer, om en vรฆrdi vises i en liste eller underforespรธrgsel i en WHERE-klausul, og erstatter dermed flere OR-betingelser pรฅ tvรฆrs af SELECT-, UPDATE-, INSERT- og DELETE-sรฆtninger for at opnรฅ en renere, hurtigere og mere lรฆsbar filtrering.

  • ???? Syntaks: vรฆrdi IN (liste) returnerer sand, nรฅr vรฆrdien matcher et element pรฅ listen.
  • ๐Ÿ”ค Karakterlister: Omslut tekstvรฆrdier med enkelte anfรธrselstegn i parenteserne.
  • ๐Ÿ”ข Numeriske lister: Sammenlign tal direkte, uden anfรธrselstegn, for at fรฅ prรฆcise match.
  • ๐Ÿšซ IKKE I: Returnerer rรฆkker, hvis vรฆrdi mangler pรฅ den angivne liste.
  • โš ๏ธ NULL-fรฆlde: En NULL i NOT IN kan lydlรธst returnere nul rรฆkker.
  • ๐Ÿค– AI-forespรธrgsler: Assistenter bygger IN-klausuler og markerer NULL og ydeevnerisici.

PostgreSQL INDE, IKKE INDE med eksempler

Hvad er PostgreSQL I?

IN-operatoren bruges i en WHERE-klausul, der gรธr det muligt at kontrollere, om en vรฆrdi findes i en liste over andre vรฆrdier. IN-operationen hjรฆlper med at reducere behovet for flere ELLER-betingelser i SELECT-, UPDATE-, INSERT- eller DELETE-sรฆtninger.

Syntaks

IN-operatoren tager fรธlgende syntaks:

value IN (value_1, value_2, ...)

Vรฆrdien er den vรฆrdi, du sรธger efter pรฅ listen.

Vรฆrdien_1, vรฆrdi_2... er listevรฆrdierne.

Hvis vรฆrdien findes pรฅ listen, vil operatรธren returnere en sand.

Listen kan vรฆre et sรฆt tal eller strenge, eller endda outputresultatet af en SELECT erklรฆring som vist nedenfor:

value IN (SELECT value FROM table-name);

Udsagnet placeret i parentesen er kendt som en underforespรธrgsel.

PostgreSQL IN Med karakter

Lad os demonstrere, hvordan du kan bruge IN-operatoren med tegnvรฆrdier.

Overvej fรธlgende tabel:

Medarbejdere:

PostgreSQL IN Med karakter

Lad os kรธre fรธlgende forespรธrgsel mod ovenstรฅende tabel:

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 navne. Vi sรธger efter, om vi kan finde nogen af โ€‹โ€‹disse navne i navnekolonnen i tabellen Medarbejdere. Kate Joel blev matchet med en af โ€‹โ€‹tabellens poster, og dens oplysninger blev returneret.

PostgreSQL IN med numerisk

Lad os nu se, hvordan vi kan bruge IN-operatoren med numeriske vรฆrdier.

Overvej pristabellen nedenfor:

Pris:

PostgreSQL IN med numerisk

Vi kan kรธre fรธlgende forespรธrgsel mod tabellen:

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

Dette returnerer fรธlgende:

PostgreSQL IN Med numerisk resultat

Vi har lavet en liste med 4 numeriske vรฆrdier. Vi tjekker, om vi kan matche nogen af โ€‹โ€‹disse vรฆrdier med vรฆrdierne i priskolonnen i pristabellen. To vรฆrdier blev matchet, og deres oplysninger blev returneret.

Brug af IKKE-funktionen OperaTor

IN-operatoren kan bruges sammen med NOT-operatoren. Det returnerer de vรฆrdier, der ikke findes i den angivne kolonne. Vi vil bruge pristabellen til at demonstrere dette.

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

Dette vil returnere fรธlgende:

PostgreSQL IN Brug af NOT-operator

Vi har lavet en liste med 4 numeriske vรฆrdier. Vi tjekker priskolonnen i pristabellen for vรฆrdier, der ikke er en del af listen. To vรฆrdier, 250 og 300, blev ikke fundet. Derfor er deres oplysninger blevet returneret.

Bruger pgAdmin

Ud over SQL-shellen kan de samme IN- og NOT IN-forespรธrgsler kรธres visuelt via pgAdmin-grรฆnsefladen.

Med Karakter

For at opnรฅ det samme gennem pgAdmin, gรธr dette:

Trin 1) Log ind pรฅ din pgAdmin-konto.

Trin 2)

  1. Klik pรฅ Databaser i navigationslinjen til venstre.
  2. Klik pรฅ Demo.

Brug af pgAdmin med tegn

Trin 3) Indtast forespรธrgslen i forespรธrgselseditoren:

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

Trin 4) Klik pรฅ knappen Udfรธr.

Brug af pgAdmin med tegnforespรธrgsel

Det skal returnere fรธlgende:

Brug af pgAdmin med tegnresultat

Med numerisk

For at opnรฅ det samme gennem pgAdmin, gรธr dette:

Trin 1) Log ind pรฅ din pgAdmin-konto.

Trin 2)

  1. Klik pรฅ Databaser i navigationslinjen til venstre.
  2. Klik pรฅ Demo.

Brug af pgAdmin med numerisk

Trin 3) Indtast forespรธrgslen i forespรธrgselseditoren:

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

Trin 4) Klik pรฅ knappen Udfรธr.

Brug af pgAdmin med numerisk forespรธrgsel

Det skal returnere fรธlgende:

Brug af pgAdmin med numerisk resultat

Brug af IKKE-funktionen OperaTor

For at opnรฅ det samme gennem pgAdmin, gรธr dette:

Trin 1) Log ind pรฅ din pgAdmin-konto.

Trin 2)

  1. Klik pรฅ Databaser i navigationslinjen til venstre.
  2. Klik pรฅ Demo.

Brug af NOT-operatoren i pgAdmin

Trin 3) Indtast forespรธrgslen i forespรธrgselseditoren:

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

Trin 4) Klik pรฅ knappen Udfรธr.

Brug af NOT-operatorforespรธrgsel i pgAdmin

Det skal returnere fรธlgende:

Brug af NOT-operatorresultat i pgAdmin

Download databasen brugt i denne vejledning

Ofte Stillede Spรธrgsmรฅl

In PostgreSQL, EXISTS kรธrer ofte hurtigere end IN pรฅ store underforespรธrgsler, fordi den stopper ved det fรธrste match. For smรฅ, konstante lister er IN enkel og effektiv. Test begge med EXPLAIN ANALYZE pรฅ dine egne data.

NOT IN behandler NULL som ukendt, sรฅ hvis listen eller underforespรธrgslen indeholder en NULL, kan hele betingelsen evalueres til ukendt og returnere nul rรฆkker. Filtrer NULL'er fra, eller brug NOT EXISTS i stedet.

IN erstatter lange kรฆder af OR-betingelser med รฉn lรฆsbar klausul. WHERE id IN (1,2,3) er lig med WHERE id=1 OR id=2 OR id=3, men er kortere, tydeligere og nemmere at vedligeholde.

Ja. PostgreSQL behandler x IN (a, b, c) som รฆkvivalent med x = ANY (ARRAY[a, b, c]). Begge producerer det samme resultat og normalt den samme forespรธrgselsplan.

AI-assistenter genererer IN-klausuler fra almindeligt engelsk, foreslรฅr den korrekte vรฆrdiliste og markerer NULL-risici i NOT IN. De omskriver ogsรฅ langsomme forespรธrgsler og tilfรธjer EXPLAIN-hints til finjustering.

Ja. AI Copilot-vรฆrktรธjer registrerer gentagne ELLER-betingelser i รฉn kolonne og omdanner dem til en enkelt IN-liste, hvilket forbedrer lรฆsbarheden og reducerer risikoen for logiske fejl.

Ja. Placer et SELECT-tegnet i parenteserne: WHERE id IN (SELECT id FROM orders). Den indre forespรธrgsel, kaldet en underforespรธrgsel, leverer listen over vรฆrdier, der kontrolleres af IN.

For store tabeller yder NOT EXISTS eller en LEFT JOIN med IS NULL normalt bedre end NOT IN fordi PostgreSQL opbygger en effektiv anti-join. Sรธrg ogsรฅ for, at de sammenlignede kolonner er indekseret.

Opsummer dette indlรฆg med: