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: