PostgreSQL IN, Ne IN s primjerima

⚡ Pametni sažetak

PostgreSQL IN operator provjerava pojavljuje li se vrijednost unutar popisa ili podupita unutar WHERE klauzule, zamjenjujući više OR uvjeta u naredbama SELECT, UPDATE, INSERT i DELETE za čišće, brže i čitljivije filtriranje.

  • 📋 Sintaksa: vrijednost IN (lista) vraća true kada vrijednost odgovara bilo kojoj stavci popisa.
  • 🔤 Popisi likova: Vrijednosti teksta stavite u jednostruke navodnike unutar zagrada.
  • 🔢 Numerički popisi: Usporedite brojeve izravno, bez navodnika, za točna podudaranja.
  • ???? NIJE UNUTRA: Vraća retke čija vrijednost nije navedena u navedenom popisu.
  • ⚠️ NULL zamka: NULL unutar NOT IN može tiho vratiti nula redaka.
  • 🤖 Upiti umjetne inteligencije: Asistenti grade IN klauzule i označavaju NULL i rizike performansi.

PostgreSQL UNUTRA, NE UNUTRA s primjerima

Što je PostgreSQL U?

Operator IN koristi se u WHERE klauzuli koja omogućuje provjeru je li vrijednost prisutna na popisu drugih vrijednosti. Operacija IN pomaže smanjiti potrebu za višestrukim OR uvjetima u naredbama SELECT, UPDATE, INSERT ili DELETE.

Sintaksa

IN operator ima sljedeću sintaksu:

value IN (value_1, value_2, ...)

Vrijednost je vrijednost koju provjeravate na popisu.

Vrijednost_1, vrijednost_2… su vrijednosti popisa.

Ako se vrijednost pronađe na popisu, operator će vratiti true.

Popis može biti skup brojeva ili nizova znakova, ili čak izlazni rezultat nekog SELECT izraz kao što je prikazano u nastavku:

value IN (SELECT value FROM table-name);

Izjava smještena unutar zagrade poznata je kao podupit.

PostgreSQL Unutar s karakterom

Pokažimo kako možete koristiti operator IN s vrijednostima znakova.

Razmotrite sljedeću tablicu:

Zaposlenici:

PostgreSQL Unutar s karakterom

Pokrenimo sljedeći upit prema gornjoj tablici:

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

Vraća sljedeće:

PostgreSQL Unutar s rezultatom znaka

Imamo popis od tri imena. Tražimo možemo li pronaći neko od tih imena u stupcu imena tablice Zaposlenici. Ime Kate Joel upareno je s jednim od zapisa u tablici i vraćeni su njegovi detalji.

PostgreSQL UNUTRA s numeričkim

Pogledajmo sada kako možemo koristiti operator IN s numeričkim vrijednostima.

Razmotrite donju tablicu cijena:

Cijena:

PostgreSQL UNUTRA s numeričkim

Možemo pokrenuti sljedeći upit prema tablici:

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

Ovo vraća sljedeće:

PostgreSQL Unutar s numeričkim rezultatom

Napravili smo popis s 4 numeričke vrijednosti. Provjeravamo možemo li spojiti bilo koju od ovih vrijednosti s vrijednostima sadržanim u stupcu cijena u tablici Cijena. Uspoređene su dvije vrijednosti i vraćeni su njihovi detalji.

Korištenje NOT-a Operahumka

Operator IN može se koristiti zajedno s operatorom NOT. Vraća vrijednosti koje nisu pronađene u navedenom stupcu. Koristit ćemo se tablicom cijena da to pokažemo.

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

Ovo će vratiti sljedeće:

PostgreSQL IN Korištenje operatora NOT

Napravili smo popis s 4 numeričke vrijednosti. Provjeravamo stupac cijena u tablici cijena za vrijednosti koje nisu dio popisa. Dvije vrijednosti, 250 i 300, nisu pronađene. Stoga su njihovi podaci vraćeni.

Koristeći pgAdmin

Izvan SQL ljuske, isti IN i NOT IN upiti mogu se vizualno izvršavati putem pgAdmin sučelja.

S karakterom

Da biste postigli isto putem pgAdmina, učinite ovo:

Korak 1) Prijavite se na svoj pgAdmin račun.

Korak 2)

  1. Na navigacijskoj traci s lijeve strane kliknite Baze podataka.
  2. Pritisnite Demo.

Korištenje pgAdmin-a sa znakom

Korak 3) Unesite upit u uređivač upita:

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

Korak 4) Pritisnite gumb Izvrši.

Korištenje pgAdmin-a s upitom znakova

Trebao bi vratiti sljedeće:

Korištenje pgAdmin s rezultatom znakova

S numeričkim

Da biste postigli isto putem pgAdmina, učinite ovo:

Korak 1) Prijavite se na svoj pgAdmin račun.

Korak 2)

  1. Na navigacijskoj traci s lijeve strane kliknite Baze podataka.
  2. Pritisnite Demo.

Korištenje pgAdmin-a s Numeric

Korak 3) Unesite upit u uređivač upita:

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

Korak 4) Pritisnite gumb Izvrši.

Korištenje pgAdmin-a s numeričkim upitom

Trebao bi vratiti sljedeće:

Korištenje pgAdmin-a s numeričkim rezultatom

Korištenje NOT-a Operahumka

Da biste postigli isto putem pgAdmina, učinite ovo:

Korak 1) Prijavite se na svoj pgAdmin račun.

Korak 2)

  1. Na navigacijskoj traci s lijeve strane kliknite Baze podataka.
  2. Pritisnite Demo.

Korištenje operatora NOT u pgAdminu

Korak 3) Unesite upit u uređivač upita:

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

Korak 4) Pritisnite gumb Izvrši.

Korištenje upita s operatorom NOT u pgAdminu

Trebao bi vratiti sljedeće:

Korištenje operatora NOT rezultira u pgAdminu

Preuzmite bazu podataka korištenu u ovom vodiču

Pitanja i odgovori

In PostgreSQLEXISTS se često izvodi brže od IN na velikim podupitima jer se zaustavlja na prvom podudaranju. Za male, konstantne liste, IN je jednostavan i učinkovit. Testirajte oba s EXPLAIN ANALYZE na vlastitim podacima.

NOT IN tretira NULL kao nepoznato, pa ako popis ili podupit sadrži NULL, cijeli uvjet može se vrednovati kao nepoznato i vratiti nula redaka. Filtrirajte NULL-ove ili umjesto toga koristite NOT EXISTS.

IN zamjenjuje duge lance OR uvjeta s jednom čitljivom klauzulom. WHERE id IN (1,2,3) jednako je WHERE id=1 OR id=2 OR id=3, ali je kraći, jasniji i lakši za održavanje.

Da. PostgreSQL tretira x IN (a, b, c) kao ekvivalent x = ANY (ARRAY[a, b, c]). Oba daju isti rezultat i obično isti plan upita.

AI asistenti generiraju IN klauzule iz jednostavnog engleskog jezika, predlažu ispravan popis vrijednosti i označavaju NULL rizike u NOT IN. Također prepisuju spore upite i dodaju EXPLAIN savjete za podešavanje.

Da. Alati AI Copilota otkrivaju ponovljene ILI uvjete u jednom stupcu i refaktoriraju ih u jednu IN listu, poboljšavajući čitljivost i smanjujući mogućnost logičkih pogrešaka.

Da. Stavite SELECT unutar zagrada: WHERE id IN (SELECT id FROM orders). Unutarnji upit, nazvan podupit, daje popis vrijednosti koje provjerava IN.

Za velike tablice, NOT EXISTS ili LEFT JOIN s IS NULL obično ima bolje rezultate od NOT IN jer PostgreSQL gradi učinkovito anti-spajanje. Također osigurajte da su uspoređeni stupci indeksirani.

Sažmite ovu objavu uz: