PostgreSQL IN, nu IN cu exemple

⚡ Rezumat inteligent

PostgreSQL Operatorul IN verifică dacă o valoare apare într-o listă sau subinterogare în interiorul unei clauze WHERE, înlocuind mai multe condiții OR în instrucțiunile SELECT, UPDATE, INSERT și DELETE pentru o filtrare mai curată, mai rapidă și mai ușor de citit.

  • 📋 Sintaxă: valoarea ÎN (listă) returnează adevărat când valoarea se potrivește cu orice element din listă.
  • 🔤 Liste de personaje: Încadrează valorile textului între ghilimele simple, în paranteze.
  • 🔢 Liste numerice: Comparați numerele direct, fără ghilimele, pentru potriviri exacte.
  • 🚫 NU ÎN: Returnează rânduri a căror valoare lipsește din lista furnizată.
  • ⚠️ Capcană NULL: O valoare NULL din NOT IN poate returna în mod silențios zero rânduri.
  • 🤖 Interogări AI: Asistenții construiesc clauze IN și semnalează riscurile NULL și de performanță.

PostgreSQL ÎN, NU ÎN cu exemple

Ce Este PostgreSQL ÎN?

Operatorul IN este utilizat într-o clauză WHERE care permite verificarea dacă o valoare este prezentă într-o listă de alte valori. Operația IN ajută la reducerea necesității utilizării mai multor condiții OR în instrucțiunile SELECT, UPDATE, INSERT sau DELETE.

Sintaxă

Operatorul IN ia următoarea sintaxă:

value IN (value_1, value_2, ...)

Valoarea este valoarea pe care o căutați în listă.

Valoarea_1, valoarea_2... sunt valorile listei.

Dacă valoarea este găsită în listă, operatorul va returna un adevărat.

Lista poate fi un set de numere sau șiruri de caractere sau chiar rezultatul unei instrucțiunea SELECT după cum se arată mai jos:

value IN (SELECT value FROM table-name);

Declarația plasată în paranteză este cunoscută ca subinterogare.

PostgreSQL ÎNTR-UN CARACTER

Să demonstrăm cum puteți utiliza operatorul IN cu valori de caractere.

Luați în considerare următorul tabel:

Numar de angajati:

PostgreSQL ÎNTR-UN CARACTER

Să rulăm următoarea interogare în tabelul de mai sus:

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

Acesta returnează următoarele:

PostgreSQL Rezultat cu caracter IN

Avem o listă cu trei nume. Căutăm dacă putem găsi vreunul dintre aceste nume în coloana nume din tabelul Angajați. Kate Joel a fost asociată cu una dintre înregistrările tabelului, iar detaliile acesteia au fost returnate.

PostgreSQL INTRARE cu numeric

Acum, să vedem cum putem folosi operatorul IN cu valori numerice.

Luați în considerare tabelul de prețuri de mai jos:

Preț:

PostgreSQL INTRARE cu numeric

Putem rula următoarea interogare pe tabel:

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

Aceasta returnează următoarele:

PostgreSQL IN Cu rezultat numeric

Am creat o listă cu 4 valori numerice. Verificăm dacă putem potrivi oricare dintre aceste valori cu valorile conținute în coloana de preț a tabelului de prețuri. Două valori au fost potrivite, iar detaliile lor au fost returnate.

Folosind NU OperaTdR

Operatorul IN poate fi utilizat împreună cu operatorul NOT. Returnează valorile care nu se găsesc în coloana specificată. Vom folosi tabelul de prețuri pentru a demonstra acest lucru.

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

Aceasta va returna următoarele:

PostgreSQL IN Folosind operatorul NOT

Am creat o listă cu 4 valori numerice. Verificăm coloana de preț a tabelului de prețuri pentru valori care nu fac parte din listă. Două valori, 250 și 300, nu au fost găsite. Prin urmare, detaliile lor au fost returnate.

Folosind pgAdmin

Dincolo de shell-ul SQL, aceleași interogări IN și NOT IN pot fi rulate vizual prin interfața pgAdmin.

Cu Caracter

Pentru a realiza același lucru prin pgAdmin, procedați astfel:

Pas 1) Conectați-vă la contul dvs. pgAdmin.

Pas 2)

  1. Din bara de navigare din stânga, faceți clic pe Baze de date.
  2. Faceți clic pe Demo.

Utilizarea pgAdmin cu caracter

Pas 3) Introduceți interogarea în editorul de interogări:

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

Pas 4) Faceți clic pe butonul Execute.

Utilizarea pgAdmin cu interogare de caractere

Ar trebui să returneze următoarele:

Utilizarea rezultatului pgAdmin cu caractere

Cu Numeric

Pentru a realiza același lucru prin pgAdmin, procedați astfel:

Pas 1) Conectați-vă la contul dvs. pgAdmin.

Pas 2)

  1. Din bara de navigare din stânga, faceți clic pe Baze de date.
  2. Faceți clic pe Demo.

Utilizarea pgAdmin cu numere

Pas 3) Introduceți interogarea în editorul de interogări:

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

Pas 4) Faceți clic pe butonul Execute.

Utilizarea pgAdmin cu o interogare numerică

Ar trebui să returneze următoarele:

Utilizarea pgAdmin cu rezultat numeric

Folosind NU OperaTdR

Pentru a realiza același lucru prin pgAdmin, procedați astfel:

Pas 1) Conectați-vă la contul dvs. pgAdmin.

Pas 2)

  1. Din bara de navigare din stânga, faceți clic pe Baze de date.
  2. Faceți clic pe Demo.

Utilizarea operatorului NOT în pgAdmin

Pas 3) Introduceți interogarea în editorul de interogări:

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

Pas 4) Faceți clic pe butonul Execute.

Utilizarea interogării cu operatorul NOT în pgAdmin

Ar trebui să returneze următoarele:

Utilizarea rezultatului operatorului NOT în pgAdmin

Descărcați baza de date folosită în acest tutorial

Întrebări frecvente

In PostgreSQL, EXISTS rulează adesea mai rapid decât IN pe subinterogări mari, deoarece se oprește la prima potrivire. Pentru liste mici, constante, IN este simplu și eficient. Testați ambele cu EXPLAIN ANALYZE pe propriile date.

NOT IN tratează NULL ca necunoscut, deci dacă lista sau subinterogarea conține un NULL, întreaga condiție poate fi evaluată ca necunoscută și poate returna zero rânduri. Filtrați valorile NULL sau utilizați NOT EXISTS în schimb.

IN înlocuiește lanțurile lungi de condiții SAU cu o singură clauză lizibilă. WHERE id IN (1,2,3) este egal cu WHERE id=1 OR id=2 OR id=3, dar este mai scurt, mai clar și mai ușor de întreținut.

Da. PostgreSQL tratează x IN (a, b, c) ca echivalent cu x = ANY (ARRAY[a, b, c]). Ambele produc același rezultat și, de obicei, același plan de interogare.

Asistenții inteligenți artificiali generează clauze IN din limbaj simplu, sugerează lista de valori corectă și semnalează riscurile NULL în NOT IN. De asemenea, rescriu interogările lente și adaugă indicii EXPLAIN pentru reglare.

Da. Instrumentele AI Copilot detectează condițiile SAU repetate pe o coloană și le refactorizează într-o singură listă IN, îmbunătățind lizibilitatea și reducând șansele de erori logice.

Da. Plasați o comandă SELECT între paranteze: WHERE id IN (SELECT id FROM orders). Interogarea internă, numită subinterogare, furnizează lista de valori verificate de IN.

Pentru tabele mari, NOT EXISTS sau o LEFT JOIN cu IS NULL are de obicei performanțe mai bune decât NOT IN deoarece PostgreSQL construiește o anti-join eficientă. De asemenea, asigură-te că sunt indexate coloanele comparate.

Rezumați această postare cu: