PostgreSQL IN, nem IN példákkal

⚡ Okos összefoglaló

PostgreSQL Az IN operátor ellenőrzi, hogy egy érték megjelenik-e egy listában vagy allekérdezésben egy WHERE záradékon belül, és több OR feltételt cserél le a SELECT, UPDATE, INSERT és DELETE utasításokban a tisztább, gyorsabb és olvashatóbb szűrés érdekében.

  • 📋 Syntax: Az IN (lista) érték igaz értéket ad vissza, ha az érték megegyezik bármely listaelemmel.
  • 🔤 Karakterlisták: A szöveges értékeket zárójelben, aposztrófok között kell megadni.
  • 🔢 Numerikus listák: Hasonlítsa össze a számokat közvetlenül, idézőjelek nélkül, a pontos egyezések érdekében.
  • ???? NINCS BENNE: Azokat a sorokat adja vissza, amelyek értéke hiányzik a megadott listából.
  • ⚠️ NULL csapda: Egy NOT IN függvényen belüli NULL érték csendben nulla sort adhat vissza.
  • 🤖 AI lekérdezések: Az asszisztensek IN záradékokat építenek, és jelzik a NULL értékeket és a teljesítménykockázatokat.

PostgreSQL IN, NOT IN példákkal

Mi a PostgreSQL BE?

Az IN operátort egy WHERE záradékban használják, amely lehetővé teszi annak ellenőrzését, hogy egy érték szerepel-e egy másik értékek listájában. Az IN művelet segít csökkenteni a többszörös OR feltétel szükségességét a SELECT, UPDATE, INSERT vagy DELETE utasításokban.

Szintaxis

Az IN operátor a következő szintaxist veszi fel:

value IN (value_1, value_2, ...)

Az érték az az érték, amelyet a listában keres.

Az érték_1, érték_2… a listaértékek.

Ha az érték megtalálható a listában, az operátor igaz értéket ad vissza.

A lista lehet számok vagy karakterláncok halmaza, vagy akár egy függvény kimeneti eredménye is. SELECT utasítás az alábbiak szerint:

value IN (SELECT value FROM table-name);

A zárójelben elhelyezett utasítást segédlekérdezésnek nevezzük.

PostgreSQL BE karakterrel

Bemutatjuk, hogyan használhatja az IN operátort karakterértékekkel.

Vegye figyelembe a következő táblázatot:

alkalmazottak:

PostgreSQL BE karakterrel

Futtassuk le a következő lekérdezést a fenti táblázatban:

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

A következőt adja vissza:

PostgreSQL BE karakteres eredménnyel

Van egy listánk három névből. Azt keressük, hogy megtaláljuk-e ezeket a neveket az Alkalmazottak tábla név oszlopában. A Kate Joel név a tábla egyik rekordjához illeszkedett, és a hozzá tartozó adatokat adta vissza a rendszer.

PostgreSQL BE Numerikus

Most pedig nézzük meg, hogyan használhatjuk az IN operátort numerikus értékekkel.

Tekintse meg az alábbi ártáblázatot:

Ár:

PostgreSQL BE Numerikus

A következő lekérdezést futtathatjuk a táblázatban:

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

Ez a következőket adja vissza:

PostgreSQL Numerikus eredménnyel

Létrehoztunk egy listát 4 numerikus értékkel. Ellenőrizzük, hogy ezek az értékek megfeleltethetők-e az Ártáblázat ár oszlopában található értékekkel. A rendszer két értéket egyeztetett, és ezek adatait visszaküldtük.

A NOT használata Operator

Az IN operátor a NOT operátorral együtt használható. A megadott oszlopban nem található értékeket adja vissza. Ennek bemutatására az Ár táblázatot fogjuk használni.

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

Ez a következőt adja vissza:

PostgreSQL IN NOT operátor használata

Létrehoztunk egy listát 4 számértékkel. Ellenőrizzük az Ártáblázat ároszlopát, hogy vannak-e olyan értékek, amelyek nem szerepelnek a listában. Két érték, a 250 és a 300 nem található. Ezért adataikat visszaküldték.

pgAdmin használatával

Az SQL shell-en túl ugyanazok az IN és NOT IN lekérdezések vizuálisan is futtathatók a pgAdmin felületen keresztül.

Karakterrel

Ha ugyanezt a pgAdminon keresztül szeretné elérni, tegye a következőket:

Step 1) Jelentkezzen be pgAdmin fiókjába.

Step 2)

  1. A bal oldali navigációs sávon kattintson az Adatbázisok elemre.
  2. Kattintson a Demo gombra.

A pgAdmin használata karakterekkel

Step 3) Írja be a lekérdezést a lekérdezésszerkesztőbe:

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

Step 4) Kattintson a Végrehajtás gombra.

pgAdmin használata karakteres lekérdezéssel

A következőt kell visszaadnia:

pgAdmin használata karakteres eredménnyel

Numerikussal

Ha ugyanezt a pgAdminon keresztül szeretné elérni, tegye a következőket:

Step 1) Jelentkezzen be pgAdmin fiókjába.

Step 2)

  1. A bal oldali navigációs sávon kattintson az Adatbázisok elemre.
  2. Kattintson a Demo gombra.

A pgAdmin használata numerikusan

Step 3) Írja be a lekérdezést a lekérdezésszerkesztőbe:

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

Step 4) Kattintson a Végrehajtás gombra.

pgAdmin használata numerikus lekérdezéssel

A következőt kell visszaadnia:

pgAdmin használata numerikus eredménnyel

A NOT használata Operator

Ha ugyanezt a pgAdminon keresztül szeretné elérni, tegye a következőket:

Step 1) Jelentkezzen be pgAdmin fiókjába.

Step 2)

  1. A bal oldali navigációs sávon kattintson az Adatbázisok elemre.
  2. Kattintson a Demo gombra.

NOT operátor használata a pgAdmin-ban

Step 3) Írja be a lekérdezést a lekérdezésszerkesztőbe:

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

Step 4) Kattintson a Végrehajtás gombra.

NOT operátor lekérdezés használata a pgAdmin-ban

A következőt kell visszaadnia:

A NOT operátor használata eredményt ad a pgAdmin-ban

Töltse le az oktatóanyagban használt adatbázist

GYIK

In PostgreSQLAz EXISTS függvény nagyméretű alkérések esetén gyakran gyorsabban fut, mint az IN, mivel az első találatnál megáll. Kis, konstans listák esetén az IN egyszerű és hatékony. Teszteld mindkettőt az EXPLAIN ANALYZE függvénnyel a saját adataidon.

A NOT IN függvény a NULL értéket ismeretlenként kezeli, tehát ha a lista vagy alkérés NULL értéket tartalmaz, a teljes feltétel ismeretlenre értékelődhet, és nulla sort adhat vissza. Szűrje ki a NULL értékeket, vagy használja helyettük a NOT EXISTS függvényt.

Az IN kifejezés egyetlen olvasható záradékkal helyettesíti az OR feltételek hosszú láncolatait. A WHERE id IN (1,2,3) egyenlő WHERE id=1 OR id=2 OR id=3-mal, de rövidebb, áttekinthetőbb és könnyebben karbantartható.

Igen. PostgreSQL Az x IN (a, b, c) kifejezést az x = ANY (ARRAY[a, b, c]) képlettel egyenértékűnek tekinti. Mindkettő ugyanazt az eredményt adja, és általában ugyanazt a lekérdezési tervet adja.

A mesterséges intelligencia asszisztensei egyszerű angol nyelvből generálnak IN záradékokat, javasolják a helyes értéklistát, és jelzik a NULL kockázatokat a NOT IN utasításban. Emellett átírják a lassú lekérdezéseket, és EXPLAIN tippeket adnak hozzá a finomhangoláshoz.

Igen. Az AI Copilot eszközei észlelik az ismétlődő VAGY feltételeket egy oszlopban, és egyetlen IN listává alakítják át őket, javítva az olvashatóságot és csökkentve a logikai hibák esélyét.

Igen. Írj egy SELECT-et a zárójelek közé: WHERE id IN (SELECT id FROM orders). A belső lekérdezés, más néven alkérés, az IN által ellenőrzött értékek listáját adja meg.

Nagy táblák esetén a NOT EXISTS vagy egy LEFT JOIN IS NULL-lal általában jobban teljesít, mint a NOT IN, mert PostgreSQL hatékony anti-join objektumot épít. Győződjön meg arról is, hogy az összehasonlított oszlopok indexelve vannak.

Foglald össze ezt a bejegyzést a következőképpen: